2011-12-05 43 views
4

我試圖使簡單的Web應用程序與Drools規則引擎集成並將其部署到heroku上。在控制器操作中,我正在執行導入和解析DRL文件的方法,並返回結果。我注意到奇怪的行爲。當我通過命令啓動應用程序play run Drools不想工作(我得到一些規則導入錯誤和解析知識異常),但是當我通過Eclipse啓動我的應用程序時,一切正常。玩!框架[1.2.4]與Heroku上的Drools

究竟是通過這些不同的方式執行我檢查:

我試圖用額外的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

我不知道如何使一個解決方法/黑客得到它的工作。

我做了以下解決的疑難問題已在方法添加下面一行到文件播放\框架\平陽黴素\遊戲\ application.py高清getClasspath(個體經營):

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

上面只是將它們在播放tmp> classes目錄中的類添加到classpath中。

一切工作正常。

但我真的不明白如何發揮是否能夠解決這些參考,因爲Drools沒有這樣做。

+0

好的,您的解決方案很好,但是當我將應用程序部署到heroku時,它不起作用。我只想更改我的應用程序代碼和配置。 – szemek

2

好吧,我發現了一個解決方案,我在這裏:https://stackoverflow.com/a/7083303/894060 我已經打包的Drools相關的類和規則文件中的一個jar文件,我把在一個目錄包含在classpath那罐子 - 它解決了這個問題。