我该如何部署Play!框架应用程序独立(没有战争),不包括应用程序文件夹中的源?

tom*_*ace 10 playframework

我正在使用play-1.2.3.

我执行了以下步骤:

  • 在application.conf中设置为production
  • 播放预编译myApp
  • 从myApp中删除app目录
  • play run myApp -Dprecompiled = true

对myApp的第一个请求导致TemplateNotFoundException.这些步骤是否正确?

由于公司的限制,我无法部署源代码.如果以上方法不起作用,我可以考虑使用Jetty进行部署.

更新
Stacktrace是:

12:27:53,932 INFO  ~ Starting C:\play-1.2.3\samples-and-tests\chat
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
Run Code Online (Sandbox Code Playgroud)

Dou*_*ugC 4

这已在 lighthouse 上报告为案例 #806 https://play.lighthouseapp.com/projects/57987-p ​​lay-framework/tickets/ 806 。我做了一些调查,发现在 1.2.3 中,如果没有模板源,就不可能在预编译模式下运行。我已经对案例 #806 的问题做了更广泛的评论。

我还实现了一个修复并将其推送到我的游戏分支 git@github.com:WiredThing/play.git 并且我已经向 playframework 发出了拉取请求,以防他们想要将其拉入。

但是,重申一下,在stock play版本中,可以在预编译模式下删除java源,但模板源必须存在,即使它从预编译文件加载字节码。