我在 Mint 12、Play 2.0 上运行,并试图让 Proguard 工作,因为我的 Heroku slug 太大了。
所以,我正在使用 xsbt proguard plugin , 并且它 barfs 因为 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))
于是,我看了一下 jar 里的东西,几乎所有的行都是这样的:
./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
最佳答案
routes.class
有不同的字节码格式,因为它是由自动生成的 javac 编译的
target/scala-{version}/src_managed/controllers/routes.java
而其他类文件由 scala 编译器生成。
关于scala - Play 2 scala route controller 字节码与所有其他字节码不一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10441797/