【问题标题】:Why does Play Framework war contains duplicate class files?为什么 Play Framework 战争包含重复的类文件?
【发布时间】:2026-01-31 08:05:01
【问题描述】:

按照 Play 上的教程,在重新创建并将代码移植到该项目后,我设法构建了该项目。

所以我现在正在做的是运行以下命令来尝试创建战争。

  • 列表项
  • 玩干净的 c:\myproject
  • 播放依赖项 c:\myproject
  • 播放预编译 c:\myproject
  • 玩战争 c:\myproject -o c:\myproject_war\myproject.war

我在 2 个位置看到 .class 文件,这对我来说毫无意义。此外,为什么还要打包 .java 文件? 存储类文件的位置是

  • myproject.war\WEB-INF\application\eclipse\classes\controllers...
  • myproject.war\WEB-INF\application\precompiled\java\controllers...

另外,我确实更改了 application.conf 文件以设置 application.mode=prod,因为它设置为 dev。

这是假设我们有重复的类文件以及在战争中部署的源代码的地方,如果是这样,系统实际使用了哪些类文件?

此应用在 Tomcat 7 上运行。

【问题讨论】:

  • 更新:此命令将有助于不部署大多数源 java 文件。 C:\local\Projects\JHS\war>play war C:\local\Projects\JHS --exclude app\controllers:app\models:app\utils:app\jobs:app\helpers:app\notifiers -o jhs .war
  • 实用信息更新:在 DEV 模式下,Play 在收到第一个传入的 HTTP 请求时编译您的 Java 源代码。然后它会监视磁盘上的源文件,如果有变化,它会尝试重新编译并重新启动应用程序生命周期。在 PROD 模式下,Play 立即将所有源代码编译为 .class 文件,并使用这些文件。您还可以“预编译”您的应用程序,然后在启动时将“-Dprecompiled=true”作为 JVM 参数传入,让它知道 .class 文件已经存在。

标签: java playframework tomcat7 playframework-1.x


【解决方案1】:

根据我从另一个论坛获得的信息,它似乎就是 Play 所做的,除非我想走自己的 Python 代码来清理 Play 所做的事情,否则我无能为力关于这个。

Google Groups - Play Framework ([1.2.4] Does Play work off of .Java files or the compiled .class files?)

【讨论】:

    最近更新 更多