scala - Play 2 scala route controller 字节码与所有其他字节码不一样

标签 scala heroku proguard playframework-2.0

我在 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/

相关文章:

android - 更新 ADT 23 后的 Proguard 错误

scala - 使用scala在play框架中生成验证码

scala - 无法在没有空代码块的情况下用没有方法实例化特征

javascript - 重复的键值违反唯一约束 - 使用 KnexJS 和 Postgresql

javascript - 我可以在本地构建,但我的 heroku 构建失败

java - Heroku 应用程序不显示以 UTF-8 作为默认编码的西里尔字符

scala - Spark 流 MQTT

scala - 如何在 Scala 中生成小于某个数的随机整数序列?

混淆导致VerifyError : Expecting a stackmap frame

netbeans - 如何在 NetBeans 6.7/6.8 中使用 ProGuard?