由 java.lang.RuntimeException 引起的线程 "main" java.lang.ExceptionInInitializerError 中的异常:无法实例化 KieServices

Exception in thread "main" java.lang.ExceptionInInitializerError caused by java.lang.RuntimeException: Unable to instance KieServices

我正在尝试开始使用 Drools 6x,在 eclipse 中,我创建了一个 Drools 项目,它创建了样板代码 运行 一个简单的 drl。

我通过 Eclipse 安装了 drools 运行time。

我有 drools 库,drools-core-5.0.1.jar,kie-api-6.0.0.beta4.jar,kie-internal-6.0.0.beta2.jar 作为我项目中的外部 jars。

然而,当我尝试 运行 以下内容时,出现以下错误:

 java.lang.ExceptionInInitializerError 
at com.sample.PetStoreExample.init(PetStoreExample.java:78)
at com.sample.PetStoreExample.main(PetStoreExample.java:67) Caused by: java.lang.RuntimeException: Unable to instance KieServices 
    at org.kie.api.KieServices$Factory.<clinit>(KieServices.java:137) 
    ... 1 more Caused by: java.lang.ClassNotFoundException:org.drools.compiler.kie.builder.impl.KieServicesImpl  at java.net.URLClassLoader.run(Unknown Source) 
    at java.net.URLClassLoader.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Unknown Source) 
    at org.kie.api.KieServices$Factory.<clinit>(KieServices.java:165) 
    ... 1 more  

如果您从 http://www.drools.org/ 下载 Jars 的 zip,您将希望将 /binaries 中的每个 jar 包含在您的项目中。即使是那些看起来你不会使用的。

我也有同样的问题,因为我认为我只需要使用几个 Jar,但事实证明它们都依赖于该 zip 文件夹中其他 jars 的 类。

我遇到这个问题是因为我的 pom 文件中有 kie-apikie-ci 作为依赖项。我删除了 kie-ci 依赖项,我不再遇到这个问题。