无法生成针对JDK 11的Java项目,目标版本11无效

无法生成针对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

我已经在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>${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项目。顺便说一句:如果我没记错的话,已经不支持认可的目录了(不记得是哪个版本了)。。。