如何更改maven java home

时间:2012-12-06 21:03:56

标签: maven java openjdk

我想改变使用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修复它。

9 个答案:

答案 0 :(得分:47)

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

答案 1 :(得分:25)

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

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

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

答案 2 :(得分:4)

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

  • 有几个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

答案 3 :(得分:4)

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

此文件为x86_64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wl,-Bsymbolic-functions -Wl,-z,relro -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security build/temp.linux-x86_64-2.7/src/cyipopt.o -L/usr/local/lib/ -lipopt -lcoinhsl -lcoinlapack -lcoinblas -lcoinmumps -lcoinmetis -o build/lib.linux-x86_64-2.7/ipopt/cyipopt.so /usr/bin/ld: cannot find -lcoinhsl /usr/bin/ld: cannot find -lcoinlapack /usr/bin/ld: cannot find -lcoinblas /usr/bin/ld: cannot find -lcoinmumps /usr/bin/ld: cannot find -lcoinmetis collect2: error: ld returned 1 exit status error: command 'x86_64-linux-gnu-gcc' failed with exit status 1 ,并且必须声明指向您的特定JVM的/etc/mavenrc环境变量。

示例:

JAVA_HOME

如果该文件存在,则已加载。

以下是export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64 脚本的摘录,以便了解:

  if [ -f /etc/mavenrc ] ; then
    . /etc/mavenrc
  fi

  if [ -f "$HOME/.mavenrc" ] ; then
    . "$HOME/.mavenrc"
  fi

或者,可以在mvn

中写入相同的内容

答案 4 :(得分:4)

如果要处理的多个项目需要构建不同的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"

答案 5 :(得分:3)

即使您安装了Oracle JDK,您的ACTION_CANCEL变量也应该引用JDK根目录中JRE 的路径。您可以参考my other answer to a similar question了解更多详情。

答案 6 :(得分:2)

只需设置JAVA_HOME env属性。

答案 7 :(得分:2)

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

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

答案 8 :(得分:0)

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

我需要使用java 1.8构建一个项目。

如果我使用java -version

检查我的Java版本

我得到了

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