[英]Runtime exception with Drools(org.drools.util.CompositeClassLoader.clone()Lorg/drools/util/CompositeClassLoader)
I'm running drools project with Java. 我正在用Java运行Drools项目。 The line
KnowledgeBase kbase = readKnowledgeBase();
该行
KnowledgeBase kbase = readKnowledgeBase();
gives the exception below: 给出以下异常:
java.lang.NoSuchMethodError: org.drools.util.CompositeClassLoader.clone()Lorg/drools/util/CompositeClassLoader;
at org.drools.compiler.PackageBuilderConfiguration.getClassLoader(PackageBuilderConfiguration.java:322)
at org.drools.rule.builder.dialect.java.JavaDialectConfiguration.setCompiler(JavaDialectConfiguration.java:91)
at org.drools.rule.builder.dialect.java.JavaDialectConfiguration.init(JavaDialectConfiguration.java:54)
at org.drools.compiler.PackageBuilderConfiguration.addDialect(PackageBuilderConfiguration.java:273)
at org.drools.compiler.PackageBuilderConfiguration.buildDialectConfigurationMap(PackageBuilderConfiguration.java:262)
at org.drools.compiler.PackageBuilderConfiguration.init(PackageBuilderConfiguration.java:175)
at org.drools.compiler.PackageBuilderConfiguration.<init>(PackageBuilderConfiguration.java:153)
at org.drools.compiler.PackageBuilder.<init>(PackageBuilder.java:254)
at org.drools.compiler.PackageBuilder.<init>(PackageBuilder.java:182)
at org.drools.builder.impl.KnowledgeBuilderFactoryServiceImpl.newKnowledgeBuilder(KnowledgeBuilderFactoryServiceImpl.java:34)
at org.drools.builder.KnowledgeBuilderFactory.newKnowledgeBuilder(KnowledgeBuilderFactory.java:47)
at com.sample.TestExample.readKnowledgeBase(TestExample.java:36)
at com.sample.TestExample.ProductClassHolder(TestExample.java:56)
at com.sample.TestExample.main(TestExample.java:30)
I had the same issue and struggled with it for a while. 我遇到了同样的问题,并为此苦了一段时间。 In my case the issue was due to the conflict of libraries drools-api.jar v5.1.1 and knowledge-api-5.4.0.Final.jar at runtime.
在我的情况下,问题是由于运行时库drools-api.jar v5.1.1和Knowledge-api-5.4.0.Final.jar冲突引起的。 Both of these libraries have class
org.drools.util.CompositeClassLoader
but the one in drools-api.jar doesn't have the clone()
method and this was getting loaded at runtime. 这两个库都具有
org.drools.util.CompositeClassLoader
类,但是drools-api.jar中的一个库没有clone()
方法,并且该库在运行时被加载。 I removed drools-api.jar and now it is working fine and rules are also getting executed. 我删除了drools-api.jar ,现在一切正常,规则也正在执行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.