在OSX上使用Eclipse和Maven进行JAVA_HOME

2022-09-04 07:35:25

我最近设置了一台OSX机器,在Eclipse中运行时,我很难让Maven拿起JAVA_HOME。

到目前为止,我已经完成了以下工作:

  1. 将JAVA_HOME设置为 ~/.bash_profileexport JAVA_HOME=$(/usr/libexec/java_home)
  2. 在 eclipse 中指定 Eclipse 的 VM.ini-vm /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/bin/java
  3. 使用 /usr/libexec/java_home -v 1.7' | 设置JAVA_HOMEsudo tee -a /etc/mavenrc'/etc/mavenrcecho 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/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"

从 CLI 在项目内运行也可以正常工作。但是,从 Eclipse 中执行相同的操作会失败,如下所示:mvn install

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.

在我看到JDK 7与中指定的相同位置被设置为默认值,并且也用于我的项目。在嵌入式 Maven 运行时或外部安装之间切换会产生相同的结果。Eclipse > Preferences > Java > Installed JREsJAVA_HOME

我必须在哪里或如何设置,以便从Eclipse内部启动的Maven进程获得正确的位置?JAVA_HOMEJAVA_HOME


答案 1

问题在于,在 Mac OSX 上,在或仅导出到终端环境中定义的环境变量。像Eclipse这样的捆绑GUI应用程序看不到它们,因此也没有从Eclipse执行任何运行配置。.bashrc.bash_profile

解决方案是创建(如果不存在)或编辑文件,并向其添加以下行:/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


答案 2

我不能评论Jeen Broekstra的答案,因为我是一个新手:-(

他的解决方案很好,只需要改进一点点。

在其中,将指令放在一起就足够了/etc/launchd.conf

getenv JAVA_HOME

然后,在/etc/bashrc

export JAVA_HOME=`/usr/libexec/java_home`

然后,重新登录(不需要重新启动;-)Eclipse的工作方式与预期的w.r.t. Maven一样。