2012-07-18 16 views
2

規則我嘗試使用下面的代碼段來加載從的Guvnor軟件包: -試圖讀取使用來自的Guvnor結果changeset.xml在錯誤

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) at com.sample.DroolsTest.readKnowledgeBase(DroolsTest.java:43) at com.sample.DroolsTest.main(DroolsTest.java:26) 導致:java.io. InvalidClassException:org.drools.rule.MVELDialectRun timeData;局部類不相容:流classdesc的serialVersionUID = 5166066541265170937,局部類的serialVersionUID = -64624826351992706 在java.io.ObjectStreamClass.initNonProxy(未知來源) 在java.io.ObjectInputStream.readNonProxyDesc(未知來源) 在java.io.ObjectInputStream中。 readClassDesc(Unknown Source) at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) at java.io.ObjectInputStream.readObject0(Unknown Source) at java.io.ObjectInputStream.readObject(Unknown Source) at java.util。 HashMap.readObject(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun。反射.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at java.io.ObjectStreamClass.invokeReadObject(Unknown Source) at java.io.ObjectInputStream.readSerialData(Unknown Source) at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) at java.io.ObjectInputStream.readObject0(Unknown Source) at java.io.ObjectInputStream.readObject(Unknown Source) at org.drools.rule.DialectRuntimeRegistry.readExternal (DialectRuntimeRegistry.java:59) at java.io.ObjectInputStream.readExternalData(Unknown Source) at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) at java.io.ObjectInputStream.readObject0(Unknow (未知源) at org.drools.rule.Package.readExternal(Package.java:208) at java.io.ObjectInputStream.readExternalData(Unknown Source) at java (未知源) at org.drools.core.util.DroolsStreamUtils.streamIn(java.io.ObjectInputStream.readObject(Unknown Source)) DroolsStreamUtils.java:205) at org.drools.core.util.DroolsStreamUtils.streamIn(DroolsStreamUtils。Java的:189) 在org.drools.compiler.PackageBuilder.addPackageFromInputStream(PackageBuilder.java:781) 在org.drools.compiler.PackageBuilder.addKnowledgeResource(PackageBuilder.java:692) ... 6個

前提條件: -

  • 我用的Guvnor 5.3和JBoss AS 7.0。
  • 客戶端和服務器共享相同的jre7。
  • Drools的運行時間5.3在Eclipse靛藍(服務版本2)

請求的解決方法,...

回答

4

相關的Java項目中使用Drools的罐子都是相同的版本不如的Guvnor 5.3使用。 使用Guvnor 5.3中的jar進入你的java項目。 它會解決問題。 :)

相關問題