83

我想用sun jdk更改打开jdk的maven java home。我该怎么做 ?

root@ak-EasyNote-TM98:~# mvn -version
Apache Maven 3.0.4
Maven home: /usr/share/maven
Java version: 1.6.0_24, vendor: Sun Microsystems Inc.
Java home: /usr/lib/jvm/java-6-openjdk-amd64/jre
Default locale: tr_TR, platform encoding: UTF-8
OS name: "linux", version: "3.2.0-34-generic", arch: "amd64", family: "unix"

Edit:

非常抱歉。我忘了写下面的代码:

root@ak-EasyNote-TM98:~$ java -version
java version "1.7.0_07"
Java(TM) SE Runtime Environment (build 1.7.0_07-b10)
Java HotSpot(TM) 64-Bit Server VM (build 23.3-b01, mixed mode)

我的 java home 默认路径已经是 sun jdk。但是maven java home已经指向openjdk。我只想为 Maven 修复它。

4

9 回答 9

71

如果您在 Linux 中,请使用语法设置 JAVA_HOME export JAVA_HOME=<path-to-java>。实际上,它不仅适用于 Maven。

于 2012-12-06T21:10:01.183 回答
48

我正在使用 Mac,上面的答案都没有帮助我。我发现 maven 从以下指定的路径加载自己的 JAVA_HOME:~/.mavenrc

我将文件的内容更改为:JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home

对于Linux,它看起来像:
export JAVA_HOME=/usr/lib/jvm/java-8-oracle/jre

于 2016-06-16T14:42:40.017 回答
15

为 MAVEN 强制使用特定 JVM 的最佳方法是创建由 mvn 脚本加载的系统范围文件。

该文件是/etc/mavenrc并且它必须声明一个JAVA_HOME指向您特定 JVM 的环境变量。

例子:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64

如果文件存在,则加载它。

这是mvn脚本的摘录,以便理解:

  如果 [ -f /etc/mavenrc ] ; 然后
    . /etc/mavenrc
  菲

  如果 [ -f "$HOME/.mavenrc" ] ; 然后
    . “$HOME/.mavenrc”
  菲

或者,可以写入相同的内容~/.mavenrc

于 2018-04-23T19:53:53.140 回答
10

如果您正在处理需要构建不同 Java 版本的多个项目,则无需JAVA_HOME为每个构建设置新的环境变量值。而是像这样执行 Maven:

JAVA_HOME=/path/to/your/jdk mvn clean install

它将使用指定的 JDK 构建,但不会更改您的环境变量。

演示:

$ mvn -v
Apache Maven 3.6.0
Maven home: /usr/share/maven
Java version: 11.0.6, vendor: Ubuntu, runtime: /usr/lib/jvm/java-11-openjdk-amd64
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.15.0-72-generic", arch: "amd64", family: "unix"

$ JAVA_HOME=/opt/jdk1.8.0_201 mvn -v
Apache Maven 3.6.0
Maven home: /usr/share/maven
Java version: 1.8.0_201, vendor: Oracle Corporation, runtime: /opt/jdk1.8.0_201/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.15.0-72-generic", arch: "amd64", family: "unix"

$ export | grep JAVA_HOME
declare -x JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
于 2020-02-13T10:05:35.237 回答
5

上面有很大的帮助,但如果你有像我一样的环境,这就是我让它工作的方式。

  • 运行一些 jdk、openjdk、oracle jdk 和几个版本。
  • 通过 yum 安装 apache-maven,包是 apache-maven-3.2.1-1.el6.noarch

编辑这个文件/etc/profile.d/apache-maven.sh,如下,注意会影响整个系统。

$ cat /etc/profile.d/apache-maven.sh
MAVEN_HOME=/usr/share/apache-maven
M2_HOME=$MAVEN_HOME
PATH=$MAVEN_HOME/bin:$PATH
# change below to the jdk you want mvn to reference.
JAVA_HOME=/usr/java/jdk1.7.0_40/
export MAVEN_HOME
export M2_HOME
export PATH
export JAVA_HOME
于 2014-04-16T05:04:34.707 回答
4

即使您安装了 Oracle JDK,您的$JAVA_HOME变量也应该引用位于 JDK 根目录中的 JRE 的路径。有关更多详细信息,您可以参考我对类似问题的其他回答

于 2015-06-24T11:54:54.130 回答
3

似乎是https://askubuntu.com/questions/21131/how-to-correctly-remove-openjdk-and-jre-and-set-the-system-use-only-and-only-sun#的副本answer-21137假设您使用的是 Ubuntu。

关键是使用命令sudo update-java-alternatives -s java-6-sun。任何依赖的命令javac都会受到影响,而不仅仅是 Maven。

于 2012-12-08T04:27:34.427 回答
2

只需设置 JAVA_HOME 环境属性。

于 2012-12-06T21:06:42.723 回答
2

我的 Ubuntu 服务器 14.04 上有两个 Java 版本:java 1.7java 1.8.

我有一个项目需要使用java 1.8.

如果我使用检查我的 Java 版本java -version

我明白了

java version "1.8.0_144"

但是当我这样做时,mvn -version我得到了:

Java version: 1.7.0_79, vendor: Oracle Corporation

将 mvn 版本设置为java8

我这样做:

export JAVA_HOME=/usr/lib/jvm/java-8-oracle/jre/

然后当我这样做时,mvn -version我得到:

Java version: 1.8.0_144, vendor: Oracle Corporation
于 2017-10-18T14:24:38.810 回答