Maven,JAVA_HOME w/OS X.

ian*_*ian 14 java macos maven-2

试图让Maven,Java和OS X一起玩得很好 - 我在Linux和Windows机器上多次没有遇到过问题.我假设我需要做的就是下载Maven,设置我的环境变量,我会很好.所以这是我的.bash_profile的一个片段......

export JAVA_HOME=/Library/Java/Home/  
export M2_HOME=/usr/local/apache-maven/apache-maven-2.2.1  
export PATH=$PATH:$M2_HOME/bin
Run Code Online (Sandbox Code Playgroud)

JAVA_HOME设置是Apple建议在此问答页面上使用的设置.然而,在启动终端并运行之后mvn --version,这是输出......

Apache Maven 2.2.1 (r801777; 2009-08-06 15:16:01-0400)  
Java version: 1.6.0_17  
Java home: /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home  
Default locale: en_US, platform encoding: MacRoman  
OS name: "mac os x" version: "10.6.2" arch: "x86_64" Family: "mac"
Run Code Online (Sandbox Code Playgroud)

知道JAVA_HOME我为什么设置我的.bash_profile被Maven忽略了吗?它导致了问题,因为rt.jarJAVA_HOMEMaven中找不到的东西正在使用.我可以通过在Maven正在使用的家中创建符号链接和其他hackery来解决这个问题,但我宁愿让它正常工作,因为这会在下次Apple推送Java更新时爆炸.谢谢你的帮助...

Mah*_*dam 11

问题是JavaVm.framework版本中的符号链接"CurrentJDK"指向旧的jdk,因此当我使用以下命令将CurrentJDK设置为最新的(1.7.0_45)时,它的工作原理

cd /System/Library/Frameworks/JavaVM.framework/Versions
sudo rm CurrentJDK
sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents CurrentJDK
Run Code Online (Sandbox Code Playgroud)

参考:http: //java.dzone.com/articles/installing-jdk-7-mac-os-x


min*_*49r 8

在Mac OS X上,您应该使用/ usr/libexec/java_home来确定正确的JAVA_HOME.

请参阅我应该在OSX上将JAVA_HOME设置为什么


enn*_*ler -3

我首先要检查的是 mvn 是否是一个脚本。如果是,您可以看到它是如何获取环境的。如果不是,我会查找通常名为 .mvnrc 或 /etc 中的任何配置文件。当然,这对RTFM来说不会有什么坏处!

  • 这是一个脚本,我可以看到这个块如何 if [ -z "$JAVA_HOME" ] ; 那么 JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/${JAVA_VERSION}/Home fi 可能会影响一些事情,但是当它自己运行时, $JAVA_HOME var 被设置,因此 if 子句被忽略。至于阅读手册,已经完成了。与搜索 Maven 用户列表一样。这是我在依赖黑客解决方案之前的最后手段。如果您没有答案,请不要回答。 (2认同)