我使用play-1.2.3.
我执行了以下步骤:
- 在application.conf 中设置为生产环境
- 从myApp中删除app目录
- play run myApp -Dprecompiled=true
对myApp的第一个请求导致TemplateNotFoundException。步骤是否正确?
由于公司的限制,我无法部署源代码。如果上面的不能工作,我可以考虑使用Jetty来部署。
更新
加亮是:
12:27:53,932 INFO ~ Starting C:play-1.2.3samples-and-testschat
12:27:54,008 INFO ~ Application is precompiled
12:27:54,553 INFO ~ Application 'chat' is now started !
12:27:54,647 INFO ~ Listening for HTTP on port 9000 ...
12:28:02,466 ERROR ~
@686d104bp
Internal Server Error (500) for request GET /
Execution exception
NullPointerException occured : null
play.exceptions.JavaExecutionException
at play.mvc.ActionInvoker.invoke(ActionInvoker.java:229)
at Invocation.HTTP Request(Play!)
Caused by: java.lang.NullPointerException
at play.exceptions.TemplateNotFoundException.<init>(TemplateNotFoundException.java:25)
at play.mvc.Controller.renderTemplate(Controller.java:666)
at play.mvc.Controller.renderTemplate(Controller.java:639)
at play.mvc.Controller.render(Controller.java:694)
at controllers.Application.index(Application.java:14)
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)
... 1 more
灯塔事件#806 https://play.lighthouseapp.com/projects/57987-play-framework/tickets/806已被报道。我做了一些调查,发现在1.2.3中,如果没有模板源存在,就不可能在预编译模式下运行。我已经对案例#806的问题做了更详尽的评论。
我也实现了一个修复,并把它推到我的玩的分叉git@github.com:WiredThing/play.git,我已经发出了一个拉请求到playframework,以防他们想拉它。
但是,重申一下,在stock play版本中,可以在预编译模式下删除java源,但是模板源必须存在,即使它从预编译文件中加载字节码。
这是一个hack,我还没有验证它超出一个模板的快速测试,但一个解决方案似乎是删除你的模板的内容,使文件仍然在技术上存在(所以Play是快乐的),但你的模板实际上没有暴露。