Maven,JAVA_HOME w/OS X

Maven,JAVA_HOME w/OS X,java,macos,maven-2,Java,Macos,Maven 2,尝试让Maven、Java和OSX一起玩得很好——这是我在Linux和Windows机器上做过多次没有问题的事情。我认为我所需要做的就是下载Maven,设置环境变量,这样我会做得很好。这是我的.bash_档案中的一个片段 export JAVA_HOME=/Library/Java/Home/ export M2_HOME=/usr/local/apache-maven/apache-maven-2.2.1 export PATH=$PATH:$M2_HOME/bin JAVA_HOM

尝试让Maven、Java和OSX一起玩得很好——这是我在Linux和Windows机器上做过多次没有问题的事情。我认为我所需要做的就是下载Maven,设置环境变量,这样我会做得很好。这是我的.bash_档案中的一个片段

export JAVA_HOME=/Library/Java/Home/  
export M2_HOME=/usr/local/apache-maven/apache-maven-2.2.1  
export PATH=$PATH:$M2_HOME/bin
JAVA_HOME
设置是苹果公司建议使用的设置。然而,在启动一个终端并运行
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"

知道为什么我在.bash\u配置文件中设置的
JAVA\u主页被Maven忽略了吗?这会导致问题,因为在Maven使用的
JAVA\u主页中找不到类似
rt.jar
的东西。我可以通过在Maven使用的家庭中创建符号链接和其他黑客手段来解决这个问题,但我更希望它能正常工作,因为这将在苹果下一次推出Java更新时对我产生影响。感谢您的帮助……

首先我要检查的是mvn是否是一个脚本。如果是,你可以看到它是如何寻找环境的。如果不是,我会查找任何通常名为.mvnrc的配置文件,或者/etc中的某些文件。当然,这不会对RTFM造成任何伤害

在我的Mac电脑上,/Library/Java/Home是一个符号链接(实际上是一系列符号链接的起点),它最终指向/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home。所以我不认为maven忽略了任何事情。它只是给你实际的位置。

我有相同的设置,一切正常。在shell脚本中取消设置“JAVA_HOME”环境变量。Mac安装会解决这个问题。不管怎么说,你把它设置错了


取消设置,获取文件或启动shell的源代码,然后重试。

在Mac OS X上,您应该使用/usr/libexec/java\u home来确定正确的java\u home


请参见

问题在于JavaVm.framework版本中的符号链接“CurrentJDK”指向旧的jdk,因此当我使用以下命令将CurrentJDK设置为最新版本(1.7.045)时,它可以工作

参考:

这是一个脚本,我可以看到如果[-z“$javau_HOME”],这个块是如何运行的;然后JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/${JAVA_VERSION}/HOME-fi可能会影响一些事情,但是当它自己运行时,$JAVA_HOME变量被设置,因此if子句被忽略。至于阅读手册,我们已经完成了。搜索Maven用户列表也是如此。这是我在依赖黑客解决方案之前的最后手段。如果您没有答案,请不要回答。我得到了“sudo rm CurrentJDK”的“不允许操作”。我在El Captain上您确定您的当前用户具有读/写此文件夹的权限吗?更好地使用管理员用户
cd /System/Library/Frameworks/JavaVM.framework/Versions
sudo rm CurrentJDK
sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents CurrentJDK