2017-02-15 14 views
0

私はJavaでdroolsプロジェクトを実行しています。ラインKnowledgeBase kbase = readKnowledgeBase();は、以下の例外を与える: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の異なるリリースのjarファイルが混在している可能性があります。あなたはどのバージョンを使用していると思いますか? – laune

+0

私は複数のバージョンを使用していない場合、私はクラスのフォーマットに直面しています。だから私は複数のバージョンを使用している理由です。 – kanni

+1

異なるDroolsバージョンのjarを混在させることはできません。元の問題を他の方法で解決する必要があります。 – laune

答えて

0

私は同じ問題を持っていたし、しばらくの間、それに苦労しました。私のケースでは、問題はライブラリの競合のためでしたdrools-api.jar v5.1.1knowledge-api-5.4.0.Final.jar実行時に。これらのライブラリは両方ともクラスorg.drools.util.CompositeClassLoaderを持っていますが、にあるものdrools-api.jarにはclone()メソッドがありません。これは実行時にロードされています。 drools-api.jarを削除しましたが、今はうまくいき、ルールも実行されています。

関連する問題