2

次のコードを使用して、Guvnor からパッケージをロードしようとしました:-

    KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
    kbuilder.add(ResourceFactory.newClassPathResource("GenderFact.xml"),ResourceType.CHANGE_SET);
    System.out.println("fair trial");
    KnowledgeBuilderErrors errors = kbuilder.getErrors();
    if (errors.size() > 0) {
        for (KnowledgeBuilderError error: errors) {
            System.err.println(error);
        }
        throw new IllegalArgumentException("Could not parse knowledge.");
    }
    KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
    kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
    return kbase;

GenderFact.xml の内容は次のとおりです。

<change-set xmlns="http://drools.org/drools-5.0/change-set"
xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
xs:schemaLocation="http://drools.org/drools-5.0/change-set http://anonsvn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-api/src/main/resources/change-set-1.0.0.xsd">
<add>
    <resource
        source="http://localhost:8080/drools-guvnor/org.drools.guvnor.Guvnor/package/MyLastTrial/LATEST/"
        type="PKG" basicAuthentication="disabled" username="admin" password="admin" />
</add>

これを Eclipse から実行しようとすると、次のエラーが発生します。

java.lang.RuntimeException: java.io.InvalidClassException: org.drools.rule.MVELDialectRuntimeData; 互換性のないローカル クラス: ストリーム classdesc serialVersionUID = 5166066541265170937、ローカル クラス serialVersionUID = -64624826351992706、org.drools.compiler.PackageBuilder.addKnowledgeResource(PackageBuilder.java:705)、org.drools.compiler.PackageBuilder.addPackageFromChangeSet(PackageBuilder.java:772) org.drools.compiler.PackageBuilder.addKnowledgeResource(PackageBuilder.java:694) で org.drools.builder.impl.KnowledgeBuilderImpl.add(KnowledgeBuilderImpl.java:45) で org.drools.builder.impl.KnowledgeBuilderImpl.add(KnowledgeBuilderImpl) .java:34) で com.sample.DroolsTest.readKnowledgeBase(DroolsTest.java:43) で com.sample.DroolsTest.main(DroolsTest.java:26) で drools.rule.MVELDialectRuntimeData; ローカル クラスは互換性がありません: ストリーム classdesc serialVersionUID = 5166066541265170937、ローカル クラス serialVersionUID = -64624826351992706 java.io.ObjectStreamClass.initNonProxy(不明なソース) で java.io.ObjectInputStream.readNonProxyDesc(不明なソース) で java.io.ObjectInputStream.readClassDesc(不明)ソース) で java.io.ObjectInputStream.readOrdinaryObject (不明なソース) で java.io.ObjectInputStream.readObject0 (不明なソース) で java.io.ObjectInputStream.readObject (不明なソース) で java.util.HashMap.readObject (不明なソース) sun.reflect.NativeMethodAccessorImpl.invoke0 (ネイティブ メソッド) で sun.reflect.NativeMethodAccessorImpl.invoke (未知のソース) で sun.reflect.DelegatingMethodAccessorImpl.invoke (未知のソース) で java.lang.reflect.Method で。

前提条件:-

  • jboss AS 7.0 で Guvnor 5.3 を使用しています。
  • クライアントとサーバーの両方が同じ jre7 を共有しています。
  • Eclipse Indigo の Drools ランタイム 5.3 (サービス リリース 2)

回避策をリクエストしています...

4

1 に答える 1

4

Javaプロジェクトで使用されるDrools関連のjarは、GUvnor5.3で使用されるものと同じバージョンではありません。Guvnor5.3のjarファイルをJavaプロジェクトに使用します。それは問題を解決します。:)

于 2012-07-24T05:38:57.120 に答える