将Heroku App更新为Java 8

k26*_*6dr 1 java heroku playframework java-8

我有一个Play 2.2我正在使用Java 8 的应用程序,我无法上班.代码使用OpenJDK 1.8为我本地编译,但是当我尝试将代码推送到Heroku时,我得到以下错误,这是我在本地早些时候出现的错误,当我在意外运行OpenJDK 1.7 with lambdas时.

java.lang.RuntimeException: Unknown constant: 18
Run Code Online (Sandbox Code Playgroud)

我设置system.properties使用Java 1.8,我知道这是有效的,因为它启动时使用以下文本:

Play 2.x - Java app detected
-----> Installing OpenJDK 1.8...done
Run Code Online (Sandbox Code Playgroud)

有没有我忘记更新到Java 8的东西?
我尝试更新PATH以及此处指定但没有做任何事情.

Hol*_*ger 7

Unknown constant: 18最可能是指CONSTANT_InvokeDynamic类文件的常量池中具有该值的标记18.这不是JDK问题,因为即使Java 7也能理解该标记.

因此,它是运行时运行的字节代码操作工具的指示器,不了解较新的类文件(但尝试处理它们,尽管版本号未知).这适用于Java 7,因为该invokedynamic功能存在,但不与普通的Java 7类文件一起使用(即由其生成javac).

既然你知道自己是否使用了字节码操作,它必须是框架的一部分,即你命名为heroku和playframework.所以你的问题不是更新JDK,而是将框架更新为支持Java-8的版本,如果这些版本已经存在的话.

  • 这是我使用heroku和java 8以及使用play 2.2.x时遇到的问题.我通过将build.properties中的sbt版本从0.13.0更改为0.13.1来解决问题.也可能适合你 (2认同)