2017-02-15 9 views
0

Я запускаю проект drools с Java. Линия KnowledgeBase kbase = readKnowledgeBase(); дает исключение ниже:Исключение Runtime с Drools (org.drools.util.CompositeClassLoader.clone() Lorg/drools/util/CompositeClassLoader)

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) 
+0

Скорее всего, у вас есть смесь банок из разных версий Drools в вашем классе. Какую версию вы думаете, что используете? – laune

+0

Если я не использую несколько версий, я сталкиваюсь с форматами классов. Поэтому я использую несколько версий. – kanni

+1

Вы не можете использовать смесь банок из разных версий Drools. Вам придется решить вашу оригинальную проблему каким-то другим способом. – laune

ответ

0

Я была такая же проблема и боролся с ним на некоторое время. В моем случае проблема была вызвана конфликтом библиотек drools-api.jar v5.1.1 и знание-api-5.4.0.Final.jar во время выполнения. Обе эти библиотеки имеют класс org.drools.util.CompositeClassLoader, но один в drools-api.jar не имеет метода clone(), и это загружалось во время выполнения. Я удалил drools-api.jar, и теперь он работает нормально, и правила также выполняются.

Смежные вопросы