【问题标题】:Maven ignoring JAVA_HOME on OSX?Maven忽略OSX上的JAVA_HOME?
【发布时间】:2016-04-19 02:26:09
【问题描述】:

由于某种原因,Maven 忽略了 OSX 上的 JAVA_HOME。

我最近从 java 8 build 11 升级到 java 8 build 25 并删除了 11,因为 25 中的错误修复。

我已经更新JAVA_HOME:

:~ > echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home

javajavac 都报告了正确的版本:

:~ > java -version
java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)

:~ > javac -version
javac 1.8.0_25

libexec 正确:

:~ > /usr/libexec/java_home 
/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home

CurrentJDK 符号链接正确:

:~ > ls -la /System/Library/Frameworks/JavaVM.framework/Versions/
total 64
drwxr-xr-x  11 root  wheel   374B Nov 19 14:35 ./
drwxr-xr-x  12 root  wheel   408B Sep 23 14:29 ../
lrwxr-xr-x   1 root  wheel    10B Jul 28 14:50 1.4@ -> CurrentJDK
lrwxr-xr-x   1 root  wheel    10B Jul 28 14:50 1.4.2@ -> CurrentJDK
lrwxr-xr-x   1 root  wheel    10B Jul 28 14:50 1.5@ -> CurrentJDK
lrwxr-xr-x   1 root  wheel    10B Jul 28 14:50 1.5.0@ -> CurrentJDK
lrwxr-xr-x   1 root  wheel    10B Jul 28 14:50 1.6@ -> CurrentJDK
lrwxr-xr-x   1 root  wheel    10B Jul 28 14:50 1.6.0@ -> CurrentJDK
drwxr-xr-x   8 root  wheel   272B Jul 29 18:41 A/
lrwxr-xr-x   1 root  wheel     1B Jul 28 14:50 Current@ -> A
lrwxr-xr-x   1 root  wheel    58B Nov 19 14:35 CurrentJDK@ -> /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents

但 Maven 仍在尝试打 1.8.0_11:

:~ > mvn -version
Error: JAVA_HOME is not defined correctly.
  We cannot execute /Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home/bin/java

运行 OSX Mavericks。

知道为什么 Maven 会忽略 JAVA_HOME 吗?

【问题讨论】:

    标签: java macos maven


    【解决方案1】:

    一位同事告诉我问题出在哪里。他不想要代表点,所以我只是为任何可能通过谷歌找到这个的人发布答案。

    解决办法是放

    export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home
    

    ~/.mavenrc
    

    显然,无论出于何种原因,maven 都会获得自己的配置文件。使用上述值创建上述文件立即解决了问题:

    :~ > mvn -version
    Apache Maven 3.2.3 (33f8c3e1027c3ddde99d3cdebad2656a31e8fdf4; 2014-08-11T16:58:10-04:00)
    Maven home: /usr/local/Cellar/maven/3.2.3/libexec
    Java version: 1.8.0_25, vendor: Oracle Corporation
    Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre
    Default locale: en_US, platform encoding: UTF-8
    OS name: "mac os x", version: "10.9.5", arch: "x86_64", family: "mac"
    

    【讨论】:

    • 非常有用的信息,这仅适用于 maven3 对吗?
    • 我无法回答这个问题,因为我没有在 mac 上运行 pre-maven3
    • 用 maven 2.2.1 修复了 mac sierra 上的这个问题
    【解决方案2】:

    我通过添加解决了这个问题

    export JAVA_HOME="$(/usr/libexec/java_home)"

    ~/.mavenrc

    Apple 建议使用 /usr/libexec/java_home 而不是使用 Java 的整个路径

    【讨论】:

    • 我找不到~/.mavenrc。我必须创建它吗?
    • 如果它不存在,那么是的,创建它。
    猜你喜欢
    • 1970-01-01
    • 2013-12-17
    • 2017-06-04
    • 1970-01-01
    • 2021-10-15
    • 2012-12-03
    • 1970-01-01
    • 1970-01-01
    • 2013-11-19
    相关资源
    最近更新 更多