如何解决运行Play:控制器/路由的Heroku错误已由Java Runtime的较新版本进行编译
我正在尝试在Heroku上运行Play ...
完整错误为: play.api.UnexpectedException:意外的异常[RuntimeException:java.lang.UnsupportedClassVersionError:控制器/路由已由Java Runtime的最新版本(类文件版本58.0)编译,此版本的Java Runtime仅识别类文件版本最高55.0](58是Java 14,55是Java 11)。
Heroku帮助说:
通过在system.properties文件中进行设置,确保使用正确的JDK版本。
我在system.proprties中添加了以下内容:
java.runtime.version = 14.0.1。
而且我可以看到它被Heroku编译所使用。但是我仍然会收到错误消息。
我以为问题可能是相反的,所以我也尝试了:
java.runtime.version = 11.0.8
我还尝试将以下内容添加到application.conf java.source = 11.0.8
为了完整性,java.source = 14.0.1
当我在没有Heroku(sbt编译阶段)的情况下在本地运行时,一切都很好。
我尝试了Heroku的Play示例,也尝试了Play的Play示例(添加了procfile)...结果是相同的。
Play版本为:
addSbtPlugin(“ com.typesafe.play”%“ sbt-plugin”%“ 2.8.2”)
我尝试放入一些旧版本,但Heroku无法编译。
解决方法
我回过头来尝试让Heroku版本在本地运行(而不是相反)。从产生的错误消息中,我发现通过brew安装的sbt向JDK 13添加了依赖项:
SBT fails with `String.class is broken`
我遵循此处列出的修复程序,并使用SDKMAN安装了sbt(此处的说明: https://www.scala-sbt.org/1.x/docs/Installing-sbt-on-Mac.html)
这使我进入下一个错误,该错误是由于“旧的SBT版本”引起的:
java.lang.NullPointerException in project root running sbt
修复此问题后,我现在可以在Heroku和本地运行Play
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。