7

Eclipse (バージョン 3.5.2) にインストールしたばかりDrools plug-inで、プラグインに付属の「Hello World」サンプルを実行しようとしています。

コードを実行するruntime errorと、次のスタック トレースが表示されます。

org.drools.RuntimeDroolsException: Unable to load dialect 'org.drools.rule.builder.dialect.java.JavaDialectConfiguration:java:org.drools.rule.builder.dialect.java.JavaDialectConfiguration'
 at org.drools.compiler.PackageBuilderConfiguration.addDialect(PackageBuilderConfiguration.java:274)
 at org.drools.compiler.PackageBuilderConfiguration.buildDialectConfigurationMap(PackageBuilderConfiguration.java:259)
 at org.drools.compiler.PackageBuilderConfiguration.init(PackageBuilderConfiguration.java:176)
 at org.drools.compiler.PackageBuilderConfiguration.<init>(PackageBuilderConfiguration.java:153)
 at org.drools.compiler.PackageBuilder.<init>(PackageBuilder.java:242)
 at org.drools.compiler.PackageBuilder.<init>(PackageBuilder.java:142)
 at org.drools.builder.impl.KnowledgeBuilderProviderImpl.newKnowledgeBuilder(KnowledgeBuilderProviderImpl.java:29)
 at org.drools.builder.KnowledgeBuilderFactory.newKnowledgeBuilder(KnowledgeBuilderFactory.java:29)
 at com.sample.DroolsTest.readKnowledgeBase(DroolsTest.java:39)
 at com.sample.DroolsTest.main(DroolsTest.java:23)
Caused by: java.lang.RuntimeException: **The Eclipse JDT Core jar is not in the classpath**
 at org.drools.rule.builder.dialect.java.JavaDialectConfiguration.setCompiler(JavaDialectConfiguration.java:94)
 at org.drools.rule.builder.dialect.java.JavaDialectConfiguration.init(JavaDialectConfiguration.java:55)
 at org.drools.compiler.PackageBuilderConfiguration.addDialect(PackageBuilderConfiguration.java:270)
 ... 9 more

関連する Java コードの一部を次に示します。

public static final void main(String[] args) {
    try {
        // load up the knowledge base
        KnowledgeBase kbase = readKnowledgeBase();
    }
}

private static KnowledgeBase readKnowledgeBase() throws Exception {
    KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
    kbuilder.add(ResourceFactory.newClassPathResource("Sample.drl"), ResourceType.DRL);
    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;
}
4

6 に答える 6

7

クラスパスにEclipseJDTコアjarがありません。Droolsクラスパスコンテナを使用していない場合、または独自のランタイムを手動で作成した場合は、jarがクラスパスまたはランタイムディレクトリの一部であることを確認してください。Droolsクラスパスコンテナーを使用してデフォルトのランタイムを生成し、JDTコアjarが存在しない場合は、Eclipse3.5.2をサポートするプラグインの最新バージョンを使用してください。もちろん、JDTコアjarを手動で追加して、ランタイムを再作成することもできます。

ランタイムの詳細については、http://download.jboss.org/drools/release/5.1.1.34858.FINAL/drools-5.1.1-docs.zipを参照して開きます。drools-5.1.1-docs.zip\drools-flow\html\ch.Drools_Eclipse_IDE_Features.html

于 2010-07-21T08:51:24.923 に答える
2

これは一般的な問題です。Eclipse Jdt コア jar をクラスパスに含めるだけで、この問題は解決します。ここから jar を追加できます: http://www.java2s.com/Code/Jar/o/Downloadoreclipsejdtcore371jar.htm

于 2016-11-30T12:33:35.303 に答える
2

JDK 1.7 以降を使用している場合、JNI4NET サンプルで使用されている Drools はバージョン 5.1 であり、JDK 1.7 以降では動作しないため、JVM を作成する前にパラメーターを設定します。

JVM を作成する前に、次の行を使用してみてください。

var bridgeSetup = new BridgeSetup();
// ... 
bridgeSetup.AddJVMOption("-Ddrools.dialect.java.compiler.lnglevel", "1.6");
// ...
Bridge.CreateJVM(bridgeSetup);
于 2014-03-09T01:02:24.390 に答える
1

私は同じ問題に直面しました。他の回答で述べたように、(私の場合のように) ランタイムが手動で作成された場合、クラスパスに eclipse JDT コア jar を追加する必要があります。ここにjarのダウンロードリンクがあります-> http://www.java2s.com/Code/Jar/o/Downloadorgeclipsejdtcore371jar.htm これをクラスパスに追加すると、問題が解決しました。

于 2015-07-07T09:23:30.693 に答える