这似乎是我在 linux 或 Windows 机器上看不到的问题。我的环境设置JAVA_HOME
来自 /usr/libexec/java_home。这是在我的 .bashrc 文件中:
export JAVA_HOME=$(/usr/libexec/java_home -version 1.7)
这导致:
~/dev/Endeavor/endeavor-sdk$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.7.0_17.jdk/Contents/Home
然而,当我在我的项目上运行 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]
我的调查表明我使用的是 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"
请注意,“Java home:”行表明 ${java.home} 变量已移至JRE,而不是JAVA_HOME
环境变量指向的 JDK。
我已经尝试JAVA_HOME
在很多地方设置,但我似乎无法找到一种方法让 maven 使用 JDK 而不是 JRE。
更新:
我发现这似乎表明这是预期的行为:Java_home in Maven
但这并不能解释为什么 native2ascii 插件找不到它需要的 JDK 工具。
我已经删除了 native2ascii 的使用,因为它在很大程度上是不必要的。所以,我在这一点上避免了这个问题。但是,如果有人知道为什么这在不同的系统上表现不同,请告诉我。