我最近设置了一台OSX机器,在Eclipse内部运行时,我无法让Maven接收JAVA_HOME.
到目前为止我做了以下事情:
用〜/ .bash_profile设置JAVA_HOME export JAVA_HOME=$(/usr/libexec/java_home)
在eclipse.ini中指定Eclipse的VM -vm
/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/bin/java
/etc/mavenrc
使用echo JAVA_HOME=\
/ usr/libexec/java_home -v 1.7` | 设置JAVA_HOME sudo tee -a/etc/mavenrc`
从CLI工作一切都像预期的那样.java -version
打印:
java version "1.7.0_45" Java(TM) SE Runtime Environment (build 1.7.0_45-b18) Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)
echo $JAVA_HOME
打印:
/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home
mvn -v
打印:
Apache Maven 3.1.1 (0728685237757ffbf44136acec0402957f723d9a; 2013-09-17 17:22:22+0200) Maven home: /usr/local/Cellar/maven/3.1.1/libexec Java version: 1.7.0_45, vendor: Oracle Corporation Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre Default locale: en_US, platform encoding: UTF-8 OS name: "mac os x", version: "10.9", arch: "x86_64", family: "mac"
mvn install
从CLI 运行项目也可以.但是,从Eclipse中执行相同操作会失败,并显示以下内容:
Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:2.9.1:jar (attach-javadocs) on project suppress-warnings: MavenReportException: Error while creating archive: Unable to find javadoc command: The environment variable JAVA_HOME is not correctly set.
在Eclipse > Preferences > Java > Installed JREs
我看到JDK 7与指定的位置相同时JAVA_HOME
设置为默认值,也用于我的项目.在嵌入式Maven运行时或外部安装之间切换会产生相同的结果.
我必须在何处或如何设置JAVA_HOME
以便从Eclipse中启动Maven进程才能获得正确的JAVA_HOME
位置?
问题是在Mac OSX上,环境变量定义在.bashrc
或.bash_profile
仅导出到终端环境.像Eclipse这样的捆绑式GUI应用程序看不到它们,因此也没有从Eclipse执行任何运行配置.
解决方案是创建(如果它不存在)或编辑文件/etc/launchd.conf
并向其添加以下行:
setenv JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home
当然,修改为你的实际JAVA_HOME
价值.(请注意,常用的伎俩.bash_profile
与$(/usr/libexec/java_home)
不工作launchd.conf
-或者至少我无法得到它的工作)
完成此操作后,您将需要重新启动计算机.重启后,M2E Maven运行配置将能够看到JAVA_HOME
变量并正确执行.