【问题标题】:maven with JDK11: javac: invalid flag: --release带有JDK11的maven:javac:无效标志:--release
【发布时间】:2018-12-01 14:22:12
【问题描述】:

我正在尝试使用 java 11 设置一个简单的 maven 项目。由于我想将 JAVA_HOME 保持为版本 8,因此我使用 maven-toolchains-plugin 让 maven 使用 jdk11 进行此项目。

虽然 maven 成功找到了 jdk-11.0.1 的匹配工具链,但我不断收到“javac: invalid flag: --release”。我做错了什么?

插件配置如下:

 <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.0</version>
    <configuration>
      <release>11</release>
    </configuration>
  </plugin>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-toolchains-plugin</artifactId>
    <version>1.1</version>
    <executions>
      <execution>
        <goals>
          <goal>toolchain</goal>
        </goals>
      </execution>
    </executions>
    <configuration>
      <toolchains>
        <jdk>
          <version>11</version>
        </jdk>
      </toolchains>
    </configuration>
  </plugin>

工具链定义为:

 <toolchain>
   <type>jdk</type>
   <provides>
     <version>11</version>
     <id>JavaSE-1.11</id>
   </provides>
   <configuration>
     <jdkHome>C:\Program Files\Java\jdk-11.0.1\bin</jdkHome>
   </configuration>
<toolchain>

【问题讨论】:

    标签: java maven java-11 maven-toolchains


    【解决方案1】:

    我发现,配置很好。问题是toolchains.xml中的jdkHome指向\jdk-11.0.1\bin方向,而不是直接指向\jdk-11.0.1.....使用&lt;jdkHome&gt;C:\Program Files\Java\jdk-11.0.1&lt;/jdkHome&gt;解决了问题..

    【讨论】:

      【解决方案2】:

      更改 jdk 版本应该主要解决问题。替换

      <version>1.11</version>
      

      <version>11</version>
      

      请确保您的 Maven 使用命令 mvn -version 配置了 JDK-11,并在那里确认 Java 版本。您也可以验证toolchains.xml JDK 是否也已配置。


      如果您尝试使用不同版本的编译器进行编译,则需要确保在maven-compiler-plugin 下执行:

      <executions>
          <execution>
              <id>java11</id>
              <phase>none</phase>
              <goals>
                  <goal>compile</goal>
              </goals>
              <configuration>
                  <release>11</release>
                  <jdkToolchain>
                      <version>11</version>
                  </jdkToolchain>
                  <compileSourceRoots>
                      <compileSourceRoot>${project.basedir}/src/main/java11</compileSourceRoot>
                  </compileSourceRoots>
                  <outputDirectory>${project.build.outputDirectory}/META-INF/versions/11</outputDirectory>
              </configuration>
          </execution>
      </executions>
      

      这是上面提到的sample pom.xml

      【讨论】:

      • 我有点困惑。如您所见,我想使用与 java_home (8) 不同的 jdk 版本 (11),这就是我使用 toolchain.xml 使 maven 为该项目使用不同 jdk 的原因。将工具链的版本从 1.11 更改为 11 并不能解决问题。
      • @HengruiJiang 你在编译器插件中也配置了executions吗?
      • 我发现,失败的原因是我将 jdkHome 指向 bin 文件夹,而不是直接指向 jdk.... hideface 感谢帮助!
      • @HengruiJiang 我的意思与...类似 请确保您的 maven 配置了 JDK-11
      猜你喜欢
      • 2017-03-19
      • 2021-08-09
      • 2018-08-12
      • 1970-01-01
      • 2021-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多