有没有办法创建一个没有drools编译器的会话?

有没有办法创建一个没有drools编译器的会话?,drools,kie,Drools,Kie,我正在尝试从我的项目中执行此代码以创建默认会话: KieServices-KieServices=KieServices.Factory.get(); KieContainer kContainer=kieServices.getKieClasspathContainer(); KieSession session=kContainer.newKieSession(); 但是,它在KieServices.Factory.get()上失败因为: Caused by: java.lang.Runt

我正在尝试从我的项目中执行此代码以创建默认会话:

KieServices-KieServices=KieServices.Factory.get();
KieContainer kContainer=kieServices.getKieClasspathContainer();
KieSession session=kContainer.newKieSession();
但是,它在
KieServices.Factory.get()上失败因为:

Caused by: java.lang.RuntimeException: Unable to instance KieServices
            at org.kie.api.KieServices$Factory.<clinit>(KieServices.java:190)
            ... 63 more
Caused by: java.lang.ClassNotFoundException: org.drools.compiler.kie.builder.impl.KieServicesImpl
            at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
            at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
            at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
            at java.lang.Class.forName0(Native Method)
            at java.lang.Class.forName(Class.java:190)
            at org.kie.api.KieServices$Factory.<clinit>(KieServices.java:188)
            ... 63 more
   at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) ~[na:1.7.0_67]
   at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.7.0_67]
   at java.lang.reflect.Constructor.newInstance(Constructor.java:526) ~[na:1.7.0_67]
   at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:147) ~[spring-beans-4.1.4.RELEASE.jar:4.1.4.RELEASE]
   ... 57 common frames omitted
原因:java.lang.RuntimeException:无法实例化服务
位于org.kie.api.KieServices$Factory(KieServices.java:190)
... 63多
原因:java.lang.ClassNotFoundException:org.drools.compiler.kie.builder.impl.kieServiceSiml
在java.net.URLClassLoader$1.run(URLClassLoader.java:366)
在java.net.URLClassLoader$1.run(URLClassLoader.java:355)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.net.URLClassLoader.findClass(URLClassLoader.java:354)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:425)
位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:358)
位于java.lang.Class.forName0(本机方法)
位于java.lang.Class.forName(Class.java:190)
位于org.kie.api.KieServices$Factory(KieServices.java:188)
... 63多
在sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)~[na:1.7.0\u 67]
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)~[na:1.7.067]
在java.lang.reflect.Constructor.newInstance(Constructor.java:526)~[na:1.7.0\u 67]
在org.springframework.beans.BeanUtils.instanceClass(BeanUtils.java:147)~[spring-beans-4.1.4.RELEASE.jar:4.1.4.RELEASE]
... 省略57个公共框架
我有一个预编译的kjar和kieapi作为我的项目的依赖项。为什么我还需要drools编译器?有没有其他方法可以创建一个不需要我向依赖项添加drools编译器的ksession(因为我的kjar已经编译好了)

以下是试图使用规则的项目的依赖项部分:


4.0.0
我的项目
我的项目
0.1-1快照
我的项目
我的项目
我的规则kjar
1
org.kie
基亚皮
6.1.0.1最终版本

KieServices不一定是DRL编译器。如果你看一下这个接口的API,你会发现它是实例化Kie提供的各种服务的入口点


碰巧实现被打包到jar中,所有“构建”内容都保存在jar中,包括DRL编译器。这并不意味着它将被实际使用。

我了解KieServices!=DRL编译器。然而,这是非常违反直觉的,我需要添加一个称为drools编译器的依赖项到我没有编译任何东西的项目中。