我最近安装了一台OSX机器,在运行Eclipse时,我很难让Maven拾取JAVA_HOME。
到目前为止,我已经做了以下工作:
export JAVA_HOME=$(/usr/libexec/java_home)-vm /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/bin/java| sudo tee -a /etc/mavenrc在/etc/mavenrc中设置echo JAVA_HOME=\从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/Homemvn -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"在来自CLI的项目中运行mvn install也是有效的。但是,在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中,我看到与JAVA_HOME中指定的位置相同的JDK 7被设置为默认值,并且也用于我的项目。在嵌入式Maven运行时或外部安装之间切换会产生相同的结果。
我必须在哪里或如何设置JAVA_HOME,以便从Eclipse内部启动的Maven进程获得正确的JAVA_HOME位置?
发布于 2014-03-31 04:26:03
问题是,在Mac上,.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变量并正确执行。
编辑:关于我的答案的细化,也见这个答案:https://stackoverflow.com/a/23078977/451941
发布于 2014-04-15 08:59:08
我不能评论Jeen Broekstra的回答,因为我是个新手:
他的解决方案是好的,它只需要改进一点点。
在/etc/launchd.conf中,只需将指令
getenv JAVA_HOME然后,在/etc/bashrc中
export JAVA_HOME=`/usr/libexec/java_home`然后,重新登录(不需要重新启动;-)和Eclipse按照预期的w.r.t工作。梅文。
发布于 2015-05-11 13:56:33
以上内容不再适用于约塞米蒂的图形应用程序!就像日食,或者任何从聚光灯开始的东西。(.bash_profile,launchd.conf只适用于终端会话。)在开始eclipse之前,只需打开一个终端窗口,并发出以下命令:
launchctl setenv JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home(用你的安装路径!)也许可以使用$(/usr/libexec/java_home)而不是完整的路径。
在这里查看关于永久解决方案的全部优秀文章:通过launchd.conf设置环境变量不再适用于OS?
https://stackoverflow.com/questions/20313453
复制相似问题