2

私はよだれから始めています。クラスパスエラーが発生しています。ここで何が欠けているのかわかりません。ヒントはありますか?

メインクラス

KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add(ResourceFactory.newClassPathResource("sample.drl"),ResourceType.DRL);
KnowledgeBase kbase = kbuilder.newKnowledgeBase();
StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
Account account = new Account(200);
account.withdraw(100);
ksession.execute(account);

}

サンプル.drl

//作成日: 2013 年 5 月 27 日

package com.rules

//list any import classes here.
import com.model


//declare any global variables here

rule "accountBalanceAtLeast"

    when
        //conditions
        $account : Account( balance < 100)
    then
        //actions
        System.out.println("Warning, Running out of money.");

end

コンソール エラー

ここに画像の説明を入力

プロジェクトのセットアップ ここに画像の説明を入力

4

3 に答える 3

8

移動sample.drlsrc/main/resourcesてから使用することをお勧めします:

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

drl ファイルを 内の別のフォルダーに配置することにした場合src/main/resources、たとえばsalesRulesとのvalidationRules場合、次を使用する必要があります。

kbuilder.add(ResourceFactory.newClassPathResource("salesRules/rules.drl"),ResourceType.DRL); kbuilder.add(ResourceFactory.newClassPathResource("validationRules/rules.drl"),ResourceType.DRL);

drl ファイルを Java パッケージ内に保持したい場合は、次のようにしてください。

kbuilder.add(ResourceFactory.newClassPathResource("com/rules/sample.drl"),ResourceType.DRL);

それが役に立てば幸い

于 2013-05-29T08:20:46.553 に答える
0

一般に、参照ファイルはソース ディレクトリの下に保持する必要があります。たとえば、「src」の下に通常のファイルがあり、「test」の下にテスト ファイルがあります。また、共通の親ディレクトリを、それらを使用するコードと共有する必要があります。

于 2016-07-20T10:25:57.703 に答える