在OS X上运行Maven时$ {java.home}会发生变化

Alp*_*eek 6 java macos maven osx-lion

这似乎是我在Linux或Windows机器上看不到的问题.我的环境设置JAVA_HOME来自/ usr/libexec/java_home.这是在我的.bashrc文件中:

export JAVA_HOME=$(/usr/libexec/java_home -version 1.7)
Run Code Online (Sandbox Code Playgroud)

这导致:

~/dev/Endeavor/endeavor-sdk$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.7.0_17.jdk/Contents/Home
Run Code Online (Sandbox Code Playgroud)

但是,当我在我的项目上运行Maven时,我从native2ascii插件中收到错误:

[ERROR] Failed to execute goal org.codehaus.mojo:native2ascii-maven-plugin:1.0-alpha-2-SNAPSHOT:native2ascii (default) on project dataAccessServices: Error starting Sun's native2ascii: -> [Help 1]
Run Code Online (Sandbox Code Playgroud)

我的调查指出我使用的是JRE而不是JDK.这很奇怪,因为我清楚地指向JAVA_HOME变量中的JDK .但是,这是mvn -version的输出:

~/dev/Endeavor/endeavor-sdk$ mvn -version
Apache Maven 3.0.4 (r1232337; 2012-01-17 03:44:56-0500)
Maven home: /usr/share/maven
Java version: 1.7.0_17, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_17.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.7.5", arch: "x86_64", family: "mac"
Run Code Online (Sandbox Code Playgroud)

请注意,"Java home:"行表示$ {java.home}变量已移至JRE而不是JAVA_HOME环境变量指向的JDK .

我已经尝试JAVA_HOME在很多地方设置但我似乎找不到让maven使用JDK作为主页而不是JRE的方法.

更新:

我发现这似乎表明这是预期的行为:Maven中的Java_home

但这并不能解释为什么native2ascii插件找不到它需要的JDK工具.

我已经删除了native2ascii的使用,因为它在很大程度上是不必要的.所以,我现在正在避免这个问题.但是,如果有人知道为什么这在不同的系统上表现不同,请告诉我.

alj*_*ipa 0

您是否尝试过运行mvm help:system应该打印与 Maven 相关的所有环境变量值?