在我的机器上,我安装了两个Java版本:(1.6和1.7由我手动安装)。我在不同的项目中都需要他们。但对于Maven,我需要1.7,但我的Maven使用1.6 Java版本。

如何将Maven设置为使用1.7?


当前回答

在Linux/Unix上,“mvn”shell脚本中的JAVA_HOME会被中的设置覆盖

$HOME/.mavenrc

在linux中添加JAVA_HOME和MAVEN路径变量

其他回答

解决这个问题的一个简单办法就是

JAVA_HOME=/usr/lib/jvm/java-6-sun/ mvn clean install

在Mac上,它看起来像-

JAVA_HOME = /图书馆/ Java / JavaVirtualMachines / jdk1.7.0_21。jdk/Contents/Home/ mvn clean install

PS:我发现的一个特殊情况是,上面给出的命令对'fish' shell不起作用。我也有bash shell可用,它在那里工作得很好。只需使用命令'bash'切换到bash shell。

您可以使用maven-compiler-plugin使用不同的JDK配置编译源。

只需在<executable>标签中指定路径到javac。例如,对于java11,它看起来像:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.0</version>
    <configuration>
        <source>11</source>
        <target>11</target>
        <fork>true</fork>
        <executable>C:\Program Files\Java\jdk-11.0.1\bin\javac</executable> <!--PATH TO JAVAC -->
    </configuration>
</plugin>

用上面的答案我无法解决这个问题,我尝试了很多方法来解决这个问题,我得到了它。我希望像我这样的人能解决这个问题。

我正在使用brew安装java和maven。 对我来说,我想使用java 1.8。所以我安装了java 1.8 但是maven仍然使用17.0.2版本

解决方案: 安装Java 1.8 我参考这个网站来安装它:https://devqa.io/brew-install-java/

MVN——版本,记住版本\

cat /usr/local/Cellar/maven/VERSION(for me 3.8.5)/bin/mvn

然后你会看到

#!/bin/bash
JAVA_HOME="${JAVA_HOME:-/usr/local/opt/openjdk/libexec/openjdk.jdk/Contents/Home}" exec "/usr/local/Cellar/maven/3.8.5/libexec/bin/mvn"  "$@"\

检查这个目录

ls /usr/local/opt

您将看到openjdk、openjdk@17、openjdk@8等文件

在MVN文件中将openjdk目录更改为openjdk@8:

#!/bin/bash
JAVA_HOME="${JAVA_HOME:-/usr/local/opt/openjdk@8/libexec/openjdk.jdk/Contents/Home}" exec "/usr/local/Cellar/maven/3.8.5/libexec/bin/mvn"  "$@"\

在POM中,你可以设置编译器属性,例如1.8:

<project>
...
 <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
...
</project>

我正在使用jenv,并面临“javax.xml.bind”的编译错误。注释”,因为终端中的MVN使用的是openjdk 13

Maven home: /usr/local/Cellar/maven/3.6.3_1/libexec
Java version: 13.0.2, vendor: N/A, runtime: /usr/local/Cellar/openjdk/13.0.2+8_2/libexec/openjdk.jdk/Contents/Home

对我来说,它在运行'jenv enable-plugin maven'后工作,就像这里建议的那样 https://stackoverflow.com/a/56487374/1582473