我尝试将简单的 Web 应用程序与 Drools 规则引擎集成并将其部署在 heroku 上。在 Controller 操作中,我正在执行导入和解析 DRL 文件并返回结果的方法。我注意到了奇怪的行为。当我通过命令 play run
启动应用程序时Drools 不想工作(我收到一些规则导入错误和解析知识异常),但是当我通过 Eclipse 启动我的应用程序时,一切正常。
我已经通过这些不同的方式检查了究竟执行了什么:
play run
执行:http://pastebin.com/UH1rD7pb 我试过运行
play run
Eclipse 执行中存在额外的 Java 参数,但我还没有找到工作组合。任何想法添加到命令中的参数
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)
最佳答案
好的,我在这里找到了一个解决方案:https://stackoverflow.com/a/7083303/894060
我将与 Drools 相关的类和规则文件打包在一个 jar 文件中,并将该 jar 放在包含在 classpath
中的一个目录中。 ——它解决了问题。
关于heroku - 玩!在 Heroku 上使用 Drools 的框架 [1.2.4],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8393036/