即使将 JAVA_HOME 设置为 jdk-17,Maven 也会继续恢复到 jdk-8

问题描述 投票:0回答:1

运行

mvn clean install
时,我不断遇到
Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.11.0:compile (default-compile) on project test: Fatal error compiling: invalid target release: 17
形式的错误。当我完全删除 JDK 8 安装时,它似乎工作正常,但当我重新安装它时(对于其他项目的依赖项),我开始看到此错误。

我使用 JEnv 设置全局/本地 JDK 版本:

▶ jenv versions
  system
  1.8.0.372-internal
  17.0
  17.0.7
  openjdk64-1.8.0.372-internal
* oracle64-17.0.7 (set by /Users/vijay/.jenv/version)

全局指向 JDK 17:

▶ echo $JAVA_HOME
/Users/vijay/.jenv/versions/oracle64-17.0.7

▶ mvn -version
Apache Maven 3.9.2 (c9616018c7a021c1c39be70fb2843d6f5f9b8a1c)
Maven home: /usr/local/Cellar/maven/3.9.2/libexec
Java version: 1.8.0_372-internal, vendor: OpenLogic-OpenJDK, runtime: /Library/Java/JavaVirtualMachines/openlogic-openjdk-8.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "13.3.1", arch: "x86_64", family: "mac"

这是我在pom.xml中设置maven的jdk版本的方法:

  <properties>
    <maven.compiler.target>17</maven.compiler.target>
    <maven.compiler.source>17</maven.compiler.source>
  </properties>
...
...
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>1.4.1</version>
        <executions>
          <execution>
            <id>enforce</id>
            <configuration>
              <rules>
                ...
                <requireJavaVersion>
                  <version>17</version>
                </requireJavaVersion>
                ...
              </rules>
            </configuration>
            <goals>
              <goal>enforce</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>

如何强迫行家尊重

$JAVA_HOME

我尝试完全删除 JDK 8 - 这解决了问题,但是当使用 JEnv 将特定项目的本地 JDK 版本切换到 JDK 8,然后使用不同的终端窗口将该项目的全局/本地 JDK 版本设置为 17 时,maven 开始恢复到 JDK 8。


编辑1: 以下“解决方法”对我有用,但并不理想:

cd jdk-8-project
jenv local openjdk64-1.8.0.372-internal
mvn clean install
# Temporarily "uninstall" jdk 8
sudo mv /Library/Java/JavaVirtualMachines/openlogic-openjdk-8.jdk ~/Desktop/
cd jdk-17-project
jenv local 17.0.7
mvn clean install
# "Re-install" jdk 8
sudo mv ~/Desktop/openlogic-openjdk-8.jdk /Library/Java/JavaVirtualMachines/
macos maven java-8 java-17 maven-compiler-plugin
1个回答
0
投票

我的 Mac 也有同样的问题。我通过以下步骤解决了它(不确定它是否适用于你)

vim ~/.mavenrc

并删除

export JAVA_HOME=my_location_of_jdk8

© www.soinside.com 2019 - 2024. All rights reserved.