3

我在 Mint 12、Play 2.0 上运行,并试图让 Proguard 工作,因为我的 Heroku slug 太大了。

所以,我正在使用xsbt proguard 插件,它会出错,因为 ProGuard 不喜欢字节码格式 51。它是 ProGuard 4.7,所以它应该与 51 一起使用,但它不:

[error] {file:/(some path)/*:proguard: java.io.IOException: Can't read
[/(that path)/target/scala-2.9.1/(my app)_2.9.1-1.0-SNAPSHOT.jar]
(Can't process class [controllers/routes$ref.class]
(Unsupported version number [51.0] for class format))

所以,我看看罐子里有什么,几乎所有的行都是这样的:

./controllers/Application.class:  compiled Java class data, version 49.0 (Java 1.5)

但是路由器看起来像这样:

./controllers/routes.class:       compiled Java class data, version 51.0

什么会使路由器选择与其他所有目标不同的目标?

如果这很重要,我正在使用 Mint 附带的 JDK7:

OpenJDK Runtime Environment (IcedTea7 2.0) (7~b147-2.0-0ubuntu0.11.10.1)
OpenJDK 64-Bit Server VM (build 21.0-b17, mixed mode
4

2 回答 2

3

routes.class具有不同的字节码格式,因为它是由 javac 从自动生成的

target/scala-{version}/src_managed/controllers/routes.java

而其他类文件由 scala 编译器生成。

于 2012-05-04T06:13:16.107 回答
0

这是减少 Heroku 上 Play 2 应用程序块大小的解决方法:
https ://groups.google.com/d/topic/play-framework/R_BbIomWsqI/discussion

于 2012-05-04T18:24:21.717 回答