无法生成针对JDK 11的Java项目,目标版本11无效
我已经在Maven 3.6.2中安装了JDK 11,并且正在使用容易出错的方法编译我的Java Maven项目。使用此配置: pom.xml:无法生成针对JDK 11的Java项目,目标版本11无效,java,maven,java-11,Java,Maven,Java 11,我已经在Maven 3.6.2中安装了JDK 11,并且正在使用容易出错的方法编译我的Java Maven项目。使用此配置: pom.xml: <properties> <java.version>11</java.version> <maven.compiler.source>${java.version}</maven.compiler.source> <maven.compiler.target>${jav
<properties>
<java.version>11</java.version>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
</properties>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven.compiler.plugin.version}</version>
<configuration>
<compilerId>javac-with-errorprone</compilerId>
<forceJavacCompilerUse>true</forceJavacCompilerUse>
<useIncrementalCompilation>false</useIncrementalCompilation>
<compilerArgs>
<arg>-Xep:ParameterName:OFF</arg>
</compilerArgs>
<compilerArguments>
<endorseddirs>${endorsed.dir}</endorseddirs>
</compilerArguments>
</configuration>
<dependencies>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-compiler-javac-errorprone</artifactId>
<version>2.8.5</version>
</dependency>
<dependency>
<groupId>com.google.errorprone</groupId>
<artifactId>error_prone_core</artifactId>
<version>${google.error.prone.version}</version>
</dependency>
</dependencies>
</plugin>
11
${java.version}
${java.version}
pom.xml:
<properties>
<java.version>11</java.version>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
</properties>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven.compiler.plugin.version}</version>
<configuration>
<compilerId>javac-with-errorprone</compilerId>
<forceJavacCompilerUse>true</forceJavacCompilerUse>
<useIncrementalCompilation>false</useIncrementalCompilation>
<compilerArgs>
<arg>-Xep:ParameterName:OFF</arg>
</compilerArgs>
<compilerArguments>
<endorseddirs>${endorsed.dir}</endorseddirs>
</compilerArguments>
</configuration>
<dependencies>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-compiler-javac-errorprone</artifactId>
<version>2.8.5</version>
</dependency>
<dependency>
<groupId>com.google.errorprone</groupId>
<artifactId>error_prone_core</artifactId>
<version>${google.error.prone.version}</version>
</dependency>
</dependencies>
</plugin>
org.apache.maven.plugins
但是,升级ASM没有改变任何事情。根据maven文档:
编译器插件用于编译项目的源代码。
从3.0开始,默认编译器是javax.tools.JavaCompiler(如果您
使用java 1.6),并用于编译java源代码。如果你愿意
要使用javac强制插件,必须配置插件选项
forceJavacCompilerUse
还请注意,目前默认的源设置为1.6,而
默认目标设置为1.6,与运行Maven的JDK无关
具有强烈建议您通过设置
源和目标,如设置的-source和-target中所述
Java编译器
将源和目标更改为11后,如下所示:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>11</source>
<target>11</target>
</configuration>
</plugin>
org.apache.maven.plugins
maven编译器插件
11
11
上面提到的无效java 11版本错误没有出现您是在旧版本的java上编译的。运行mvn-v
,maven会告诉您它运行的是哪个java版本,我在前面检查过,它仍然显示为11。ApacheMaven 3.6.2(40f52333136460af0dc0d7232c0dc0bcf0d9e117;2019-08-27T11:06:16-04:00)Maven主页:/opt/Apache/Maven/3.6.2 Java版本:11.0.3-gentoo,供应商:gentoo,运行时:/usr/lib64/openjdk-11默认区域设置:en_-US,平台编码:UTF-8操作系统名称:“linux”,版本:“4.19.27-gentoo-r1”,arch:“D6AM4”,家族:“unix”啊,我手动过“升级”到11,我错过了javac->11它应该足以使JAVA_HOME指向您的JDK11安装目录。这是maven默认使用的。您可以在运行maven的shell会话中这样做(如果需要,将另一个JAVA版本保留为系统默认版本)你应该简单地使用JAVA_HOME,没有其他任何东西,没有符号链接等技巧。这会失败。此外,我不明白你为什么在maven编译器插件中添加了许多依赖项?除此之外,你应该使用补充的11
来使用javac的--release
开关来检查JDK9+中的bootclasspath等。我很抱歉正在处理一个不需要这种配置的JDK11项目。顺便说一句:如果我没记错的话,已经不支持认可的目录了(不记得是哪个版本了)。。。