java - Eclipse 中带有 SOAP Web 服务的 Drools
问题描述
在eclipse中,我正在开发一个基于soap的web服务,我决定使用Drools来编写业务逻辑。这就是我将 drools 集成到 eclipse 中所做的: - 使用“安装新软件”选项在 eclipse 中安装了 drools 插件。- 将所有的drools jar 文件复制到“Referenced Libraries”文件夹中。- 使用新添加的 drools jar 文件继续使用我之前创建的动态 Web 项目。
在我构建知识库的线程的一个阶段(使用线程池执行程序的提交方法启动),我有 kieServices 初始化,如下所示:
kieServices ks = kieServices.Factory.get();
但是此时应用程序崩溃了。当我尝试在 Eclipse 中调试时,应用程序到达了这个初始化点,当我作为调试的一部分进入它时,它会将我带到 java.util.concurrent.FutureTask.class 的 catch 块之一。
所以,这个工厂抛出了一些异常,即使使用基 Exception 类我也无法捕获。它既没有被捕获,我也无法在任何 tomcat 日志中看到任何堆栈跟踪。
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 来消除异常。
推荐阅读
- java - 具有不同名称的同一项目给出错误:无法找到或加载主类
- c# - 为什么 ZipFile.CreateFromDirectory 在这里拒绝访问?
- java - 设置重复警报
- python-asyncio - Asyncio 致命错误:protocol.data_received() 调用失败
- bash - !cat 的输出未显示在 jupiter 笔记本中
- syntax - 使用 Case 语句的 JK 触发器的 VHDL 程序
- php - 缺少路由 ajax 帖子所需的参数
- javascript - Angularjs 请求 URL: unsafe:javascript:void(0); 对于 ng-click
- android - 如何将数据添加到 Google Places API 结果?
- android - 在 android oreo 上共享图像不起作用,但可以使用牛轧糖