在我的 Maven 项目中,依赖于 Java 8,我希望 Maven 在构建项目时也能假设相同。但目前我安装的maven正在使用java 21。如何让它使用java 8来构建项目。我已经在 pom.xml 的属性和 maven-compiler-plugin 配置中包含了所需的 java 版本。 此命令的输出显示其使用 java 21 :
mvn -version
Maven home: /usr/local/Cellar/maven/3.9.6/libexec
Java version: 21.0.1, vendor: Homebrew, runtime: /usr/local/Cellar/openjdk/21.0.1/libexec/openjdk.jdk/Contents/Home
Default locale: en_IN, platform encoding: UTF-8
OS name: "mac os x", version: "13.4.1", arch: "x86_64", family: "mac"
这是我运行 mvn clean install 时遇到的错误:
[错误] 无法在项目 mtl-billing 上执行目标 org.apache.maven.plugins:maven-compiler-plugin:3.3:compile (default-compile): 致命错误编译: java.lang.NoSuchFieldError: Class com.sun .tools.javac.tree.JCTree$JCImport 没有成员字段 'com.sun.tools.javac.tree.JCTree qualid' -> [帮助 1]
我认为这与java版本有关。如果我让 Maven 以某种方式使用 java 8,它应该可以工作。
我有 java 8。命令“which java”的输出给出:
/usr/local/opt/openjdk@8/bin/java
我尝试在 pom.xml 的属性下包含较低的 Maven 版本
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.version>3.0.4</maven.version>
</properties>
但这实际上并不能让它在较低版本上运行。
从 maven install docs,要使用 Maven,您需要:
设置指向您的 JDK 安装的 JAVA_HOME 环境变量,或者将 java 可执行文件放在您的 PATH 上
这就是 maven 决定使用哪个 JDK 安装的方式,因此您需要检查这些环境变量的值。看看自制程序是否有更改这些值的选项,如果您使用它,JENV 就会这样做。您也可以手动设置这些变量。这假设您希望在系统中的任何地方使用相同的 JDK,即。您使用 JDK 8 进行构建,然后部署到也在 JDK 8 上运行的服务器上,等等。
如果您需要更大的灵活性,并且希望将项目构建与安装的 JDK 版本解耦,那么 使用 Maven 工具链