在我的Play应用程序中,我使用Reflections(http://code.google.com/p/reflections/)来获取一些带有特定注释的字段。
Reflections需要访问.class文件才能创建索引。在DEV模式下,它很有效,因为Play会在tmp / classes中生成.class文件。但在PROD模式下,默认情况下Play不会生成这些.class文件。因此我的申请不起作用!
有没有办法强制Play生成.class文件,即使在PROD模式下?
答案 0 :(得分:2)
您应该首先尝试使用play precompile预编译代码。然后使用play start -Dprecompiled = true启动应用程序 这应该可以解决问题。
答案 1 :(得分:0)
您检查过“预编译”目录吗?在PROD模式下运行时,类文件放在此处。
答案 2 :(得分:0)
另一个好的解决方案是使用Reflections在编译时扫描并将元数据保存为XML一次,而不是在引导时收集XML并初始化Reflection而不扫描。
如果使用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>
而不是在bootstrap:
Reflections reflections =
isProduction() ? Reflections.collect() : new Reflections("your.package.here");
如果不使用Maven,您可以通过编程方式进行操作。有关详细信息,请参阅Reflections UseCases Wiki
中的“收集预扫描的元数据”