2

在我的 Play 应用程序中,我使用 Reflections ( http://code.google.com/p/reflections/ ) 来获取一些带有特定注释的字段。

Reflections 需要访问 .class 文件才能创建其索引。在 DEV 模式下,它工作得很好,因为 Play 在 tmp/classes 中生成 .class 文件。但在 PROD 模式下,Play 默认不会生成那些 .class 文件。因此我的应用程序不起作用!

有没有办法强制 Play 生成 .class 文件,即使在 PROD 模式下也是如此?

4

3 回答 3

2

您应该先尝试使用 play precompile 预编译您的代码。然后使用 play start -Dprecompiled=true 启动您的应用程序,这应该可以解决问题。

于 2012-01-05T20:23:20.110 回答
0

你检查过你的“预编译”目录吗?在 PROD 模式下运行时,类文件放在此处。

  • 史蒂夫
于 2012-01-05T11:37:27.813 回答
0

另一个好的解决方案是在编译时使用反射扫描元数据并将其保存为 XML,然后在引导时收集 XML 并初始化反射而不扫描。

如果使用 Maven,您首先需要配置插件:

<plugin>
    <groupId>org.reflections</groupId>
    <artifactId>reflections-maven</artifactId>
    <version>0.9.8</version>
    <executions>
        <execution>
            <goals>
                <goal>reflections</goal>
            </goals>
            <phase>process-classes</phase>
        </execution>
    </executions>
</plugin>

而不是在引导程序上:

Reflections reflections =
            isProduction() ? Reflections.collect() : new Reflections("your.package.here");

如果不使用 Maven,您可以通过编程方式进行。有关更多信息,请查看 Reflections UseCases Wiki中的“收集预扫描的元数据”

于 2013-03-10T10:13:08.853 回答