2011-12-05 17 views
4

私はDroolsルールエンジンと統合された簡単なWebアプリケーションを作成し、herokuにデプロイしました。コントローラアクションでは、DRLファイルをインポートして解析し、結果を返すメソッドを実行しています。私は奇妙な行動に気づいた。コマンドでアプリケーションを起動するときplay run Droolsは動作したくない(いくつかのルールのインポートエラーと構文解析の例外が発生する)が、Eclipseを使用してアプリケーションを起動するとすべてが機能している。再生!フレームワーク[1.2.4] Drools on Heroku

まさにこれらのさまざまな方法を介して実行されたものを私がチェックしました:

私は余分のJavaでplay runを実行しようとしましたEclipseの実行中の引数がありますが、実際の組み合わせは見つかりませんでした。

どのような引数をコマンドに追加するといいですか?play run解決策を見つけるには?

ご協力いただきありがとうございます。

スタックトレース:

java.lang.IllegalArgumentException: 
    at drools.RuleEngine.readKnowledgeBase(RuleEngine.java:66) 
    at drools.RuleEngine.run(RuleEngine.java:28) 
    at controllers.Application.index(Application.java:17) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:616) 
    at play.mvc.ActionInvoker.invokeWithContinuation(ActionInvoker.java:546) 
    at play.mvc.ActionInvoker.invoke(ActionInvoker.java:500) 
    at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:476) 
    at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:471) 
    at play.mvc.ActionInvoker.invoke(ActionInvoker.java:159) 
    at play.server.PlayHandler$NettyInvocation.execute(PlayHandler.java:220) 
    at play.Invoker$Invocation.run(Invoker.java:265) 
    at play.server.PlayHandler$NettyInvocation.run(PlayHandler.java:200) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:166) 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:165) 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:266) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
    at java.lang.Thread.run(Thread.java:679) 
+0

エラーは何ですか?スタックトレース? –

+0

どのクラスがeclipse/classesに入っていますか? –

+0

@szemekあなたは同じ問題に直面しているiamも詳しく教えてください。 –

答えて

1

は、私はそれがどのように働いて得るためにハック/回避策を作るには考えています。:私はproblem.Iを解決するには、以下のなかった

は\ファイル遊びに方法内のフレームワークの\ PYM \プレーの\ application.pyデフgetClasspath(自己を)次の行を追加しました

 classpath.append(os.path.normpath(os.path.join(os.path.join(self.path, 'tmp'),'classes'))) 

上記は、play tmp> classesディレクトリにあるクラスをクラスパスに追加するだけです。

すべて正常です。

しかし、Droolsがそうしていない場合、どのようにしてこれらの参照を解決できるのか、私は実際に理解していませんでした。

+0

あなたのソリューションは問題ありませんが、私のアプリをherokuにデプロイすると機能しません。私は自分のアプリケーションコードと設定だけを変更したいと思います。 – szemek

2

[OK]を、私はここに私のための解決策を見つけた:https://stackoverflow.com/a/7083303/894060 私は1つのjarファイルにDroolsの関連クラスとルールファイルを詰めてきたと私はclasspathに含まれる1つのディレクトリにそのjarファイルを置く - それは問題を解決しました。

関連する問題