在 eclipse 中,我正在开发一个基于 soap 的 Web 服务,为此我决定使用 Drools 来编写业务逻辑。 这就是我所做的将口水整合到日食中: - 使用"安装新软件"选项在 eclipse 中安装了流口水插件。 - 将所有流口水jar文件复制到"引用库"文件夹中。 - 继续使用我以前创建的动态 Web 项目,使用新添加的流口水 jar 文件。
在我的线程(使用线程池执行器的提交方法启动(的一个阶段,我正在构建知识库,我有 kieServices 初始化,如下所示:
kieServices ks = kieServices.Factory.get();
但此时应用程序崩溃。当我尝试在 eclipse 中进行调试时,应用程序会到达此初始化点,当我作为调试的一部分进入它时,它会将我带到 java.util.concurrent.FutureTask.class 的一个捕获块。
因此,该工厂抛出了一些异常,即使使用基异常类也无法捕获。它既没有被捕获,我也无法在任何雄猫日志中看到任何堆栈跟踪。
try {
// load up the knowledge base
KieServices ks = KieServices.Factory.get();
KieContainer kContainer = ks.getKieClasspathContainer();
KieSession kSession = kContainer.newKieSession("ksession-rules");
...
...
}
catch(Exception e) {
e.printStackTrace(); }
任何帮助将不胜感激。
注意:如果我在 eclipse 中的单独 Drools 项目(不是动态 Web 项目(中使用相同的 drools jar,则此 kieServices 工厂调用工作正常。
我能够自己找出问题。 抛出了一个 Throwable 类型的异常,代码中缺少 catch 块。引发的异常是NoClassDefFoundError。 添加了 catch 块并通过在运行时环境中复制丢失的 jar 来摆脱异常。