使用 Java 11 玩 2.2.2

Posted

技术标签:

【中文标题】使用 Java 11 玩 2.2.2【英文标题】:Play 2.2.2 with Java 11 【发布时间】:2019-03-19 13:47:01 【问题描述】:

我有一个 Play 2.2.2 项目,我通常使用 activator 1.3.12 运行。现在我更新到 Java 11 并且激活器抱怨如下:

The java installation you have is not up to date
activator requires at least version 1.6+, you have
version 11

Please go to http://www.java.com/getjava/ and download
a valid Java Runtime and install before running activator.

如果我尝试直接使用 sbt 1.2.4 运行应用程序,我会收到未解决的依赖路径错误

Note: Unresolved dependencies path:
[warn]      com.typesafe.play:sbt-plugin:2.2.2 (scalaVersion=2.12, sbtVersion=1.0) (/myProject/project/plugins.sbt#L8-9) 
[warn]        +- default:myProject-build:0.1.0-SNAPSHOT (scalaVersion=2.12, sbtVersion=1.0) 
[error] sbt.librarymanagement.ResolveException: unresolved dependency: com.typesafe.play#sbt-plugin;2.2.2: not found

有人对如何让这个旧项目在 Java 11 下运行有任何建议吗?

【问题讨论】:

这不可能,我想。 SBT 1.x 仅适用于 Play >= 2.5,旧的激活器(它只是一种 SBT 启动器)不适用于 Java > 8。只需继续使用 Java 8 JRE。 不仅是 Play 或激活器,Play 和您的项目还有大量依赖项,这些依赖项可能还没有为 Java > 8 做好准备,例如在运行时进行版本检查,使用会导致运行时错误的已弃用/删除的类。 【参考方案1】:

以 SBT 为例,记住 SBT 是 Scala 和 Java 项目的开源构建工具,类似于 Java 的 Maven 和 Ant,按照这个思路,Scala 对 Java 的兼容性有最低和最高要求,在此链接中,您可以找到信息:

https://docs.scala-lang.org/overviews/jdk-compatibility/overview.html

我应该将你的 java 版本降级到 10。

祝你好运。

【讨论】:

以上是关于使用 Java 11 玩 2.2.2的主要内容,如果未能解决你的问题,请参考以下文章

一起玩个架构,名字叫做LAMP

一起玩个架构,名字叫做LAMP

一起玩转树莓派(11)——使用LCD屏

玩 2.4 表单字段值绑定到 java.time.LocalDate 类型

玩 2.4:如何使用 MultipartFormData 编写文件上传测试用例

使用权重手动计算的交叉熵损失