0

新しい型宣言にフィールドを追加できません。.drl ファイルの型宣言ごとに実際の Java クラスが必要ですか? これらは Drools によって生成されたと思いますか?

これは機能します:

package tests

declare Person
end

フィールドを追加します (タイプは関係ありません)。

package tests 

declare Person
    age : int
end

そして、次のエラーがスローされます。

java.lang.NoSuchMethodError: java.lang.String.isEmpty()Z
at org.drools.compiler.PackageBuilder.resolveType(PackageBuilder.java:1606)
at org.drools.compiler.PackageBuilder.fillFieldTypes(PackageBuilder.java:1672)
at org.drools.compiler.PackageBuilder.processTypeDeclarations(PackageBuilder.java:2008)
at org.drools.compiler.PackageBuilder.mergePackage(PackageBuilder.java:1272)
at org.drools.compiler.PackageBuilder.addPackage(PackageBuilder.java:869)
at org.drools.compiler.PackageBuilder.addPackageFromDrl(PackageBuilder.java:466)
at org.drools.compiler.PackageBuilder.addKnowledgeResource(PackageBuilder.java:694)
at org.drools.builder.impl.KnowledgeBuilderImpl.add(KnowledgeBuilderImpl.java:51)
at org.drools.builder.impl.KnowledgeBuilderImpl.add(KnowledgeBuilderImpl.java:40)
at RuleTest.setUp(RuleTest.java:35)
at junit.framework.TestCase.runBare(TestCase.java:132)
at junit.framework.TestResult$1.protect(TestResult.java:110)
at junit.framework.TestResult.runProtected(TestResult.java:128)
at junit.framework.TestResult.run(TestResult.java:113)
at junit.framework.TestCase.run(TestCase.java:124)
at junit.framework.TestSuite.runTest(TestSuite.java:232)
at junit.framework.TestSuite.run(TestSuite.java:227)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)

「Testrules.drl」行でスローされます。

@Override
public void setUp() throws Exception {
    KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();

    kbuilder.add( ResourceFactory.newClassPathResource( "Testrules.drl" ), ResourceType.DRL );
    ...
}

Eclipse 3.4.2、Drools 5.5.0 Final を使用

4

1 に答える 1

0

メソッド String.isEmpty() は 1.6 (Java 6) で導入されたようです。古い Java VM を削除し、現在のバージョン (Java 7) をインストールすると、問題が修正されました。

于 2013-06-07T11:09:55.760 に答える