玩框架[1.2.4]在Heroku上有口水

玩框架[1.2.4]在Heroku上有口水,heroku,playframework,drools,Heroku,Playframework,Drools,我尝试将简单的web应用程序与Drools规则引擎集成,并将其部署在heroku上。在控制器操作中,我正在执行导入和解析DRL文件并返回结果的方法。我注意到了奇怪的行为。当我通过命令启动应用程序时,Drools不想工作(我得到一些规则导入错误和解析知识异常),但当我通过Eclipse启动应用程序时,一切都正常 我已经检查了通过以下不同方式执行的具体内容: Eclipse执行: 播放运行执行: 我曾尝试使用Eclipse执行中存在的额外Java参数运行play run,但还没有找到有效的组合

我尝试将简单的web应用程序与Drools规则引擎集成,并将其部署在heroku上。在控制器操作中,我正在执行导入和解析DRL文件并返回结果的方法。我注意到了奇怪的行为。当我通过命令启动应用程序时,Drools不想工作(我得到一些规则导入错误和解析知识异常),但当我通过Eclipse启动应用程序时,一切都正常

我已经检查了通过以下不同方式执行的具体内容:

  • Eclipse执行:
  • 播放运行
    执行:
我曾尝试使用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)
我不知道如何进行变通/破解以使其正常工作

为解决此问题,我执行了以下操作。我已将以下行添加到方法def getClasspath(self):中的文件play\framework\pym\play\application.py

        classpath.append(os.path.normpath(os.path.join(os.path.join(self.path, 'tmp'),'classes')))
上面只是将playtmp>classes目录中的类添加到类路径中

一切正常


但我真的不明白play是如何解决as Drools无法解决的这些引用的。

好的,我在这里找到了一个解决方案:
我将Drools相关的类和规则文件打包到一个jar文件中,并将该jar放在
类路径中的一个目录中,解决了这个问题。

有什么错误?stacktrace?哪些类将进入eclipse/类?@szemek你能详细说明我也面临同样的问题。谢谢@szemek我自己最终解决了这个问题。。。。。。。。我花了大约2天的时间来调试并完成它…………但知道drools无法检测到播放模型,这看起来很奇怪?带有一些修复的代码在播放时效果很好!2.0-beta。好的,您的解决方案很好,但当我将应用程序部署到heroku时,它将无法工作。我只想更改我的应用程序代码和配置。