2017-02-15 1 views
0

Je cours un projet de drools avec Java. La ligne KnowledgeBase kbase = readKnowledgeBase(); donne l'exception ci-dessous:Exception d'exécution avec 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

Vous avez probablement un mélange de pots de différentes versions de Drools dans votre chemin de classe. Quelle version pensez-vous utiliser? – laune

+0

Si je n'utilise pas plusieurs versions, je fais face à des formats de classe. C'est la raison pour laquelle j'utilise plusieurs versions. – kanni

+1

Vous ne pouvez pas utiliser un mélange de pots de différentes versions de Drools. Vous devrez résoudre votre problème d'origine d'une autre manière. – laune

Répondre

0

J'ai eu le même problème et a lutté avec pendant un certain temps. Dans mon cas, le problème était dû au conflit des bibliothèques drools-api.jar v5.1.1 et connaissances-api-5.4.0.Final.jar à l'exécution. Ces deux bibliothèques ont la classe org.drools.util.CompositeClassLoader mais celle de drools-api.jar n'a pas la méthode clone() et celle-ci était chargée au moment de l'exécution. J'ai supprimé drools-api.jar et maintenant il fonctionne bien et les règles sont également en cours d'exécution.