我下载了打开的jdk,并且在maven构建中遇到了一些问题,特别是maven-enforcer-plugin。使用插件版本1.4.1。
Enforcer插件正在尝试强制执行类似]的JDK版本>
<requireJavaVersion> <version>[13,)</version> <message>[ERROR] OLD JDK [${java.version}] in use. Need JDK 13.0 or newer</message> </requireJavaVersion>
Enforcer插件因以下错误而崩溃
Caused by: java.lang.StringIndexOutOfBoundsException: begin 0, end 3, length 2 at java.lang.String.checkBoundsBeginEnd (String.java:3319) at java.lang.String.substring (String.java:1874) at org.apache.commons.lang.SystemUtils.getJavaVersionAsFloat (SystemUtils.java:1122) at org.apache.commons.lang.SystemUtils.<clinit> (SystemUtils.java:818) at org.apache.maven.plugins.enforcer.RequireJavaVersion.execute (RequireJavaVersion.java:52) at org.apache.maven.plugins.enforcer.EnforceMojo.execute (EnforceMojo.java:193) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
花费大量时间后,我终于弄清JDK是没有小数点的报告版本。这导致插件失败。
java -version openjdk version "13" 2019-09-17 OpenJDK Runtime Environment (build 13+33) OpenJDK 64-Bit Server VM (build 13+33, mixed mode, sharing)
在这种情况下,解决方法是什么?
我下载了打开的jdk,并且在maven构建中遇到了一些问题,特别是maven-enforcer-plugin。使用插件版本1.4.1。 Enforcer插件正在尝试强制实施<...>
基于recent sources,它仍在使用commons-lang来检测Java版本。此实现存在一些问题,并且不向前兼容。我创建了MENFORCER-347,应该可以轻松解决。我已将其标记为可升级,因此它会显示在https://s.apache.org/up-for-grabs_maven列表中,希望有人会捡起来。