我是maven的新手,也是MacOS的新手。
我在终端设置了maven,在获取版本设置时(使用mvn -v
),它似乎使用了JDK 1.6,而我安装了JDK 1.7。有什么不对吗?
我输入的命令是:
blues:helloworld Ninja$ java -version
java version "1.7.0_05" Java(TM) SE Runtime Environment (build 1.7.0_05-b06) Java HotSpot(TM) 64-Bit Server VM (build 23.1-b03, mixed mode)`
blues:helloworld Ninja$ mvn -v
Apache Maven 3.1.0 (893ca28a1da9d5f51ac03827af98bb730128f9f2; 2013-06-28 10:15:32+0800) Maven home: /usr/local/Cellar/maven/3.1.0/libexec Java version: 1.6.0_51, vendor: Apple Inc. Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home Default locale: zh_CN, platform encoding: EUC_CN OS name: "mac os x", version: "10.8.4", arch: "x86_64", family: "mac"
答案 0 :(得分:222)
将以下内容添加到~/.mavenrc
:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/{jdk-version}/Contents/Home
echo export "JAVA_HOME=\$(/usr/libexec/java_home)" >> ~/.bash_profile
答案 1 :(得分:45)
进入
/System/Library/Frameworks/JavaVM.framework/Versions
并更新CurrentJDK
符号链接以指向
/Library/Java/JavaVirtualMachines/YOUR_JDK_VERSION/Contents/
E.g。
cd /System/Library/Frameworks/JavaVM.framework/Versions
sudo rm CurrentJDK
sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/ CurrentJDK
现在它会立即起作用。
答案 2 :(得分:39)
您也可以这样做,
<properties>
...
<!-- maven-compiler-plugin , aka JAVA Compiler 1.7 -->
<maven.compiler.target>1.7</maven.compiler.target>
<maven.compiler.source>1.7</maven.compiler.source>
...
</properties>
答案 3 :(得分:26)
您还可以明确告诉maven要编译哪个java版本。您可以尝试将maven-compiler-plugin
添加到您的pom。
<project>
[...]
<build>
[...]
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
[...]
</build>
[...]
</project>
如果您将maven项目导入IDE,那么IDE中可能存在maven设置,用于maven runner正在使用的默认编译器。
答案 4 :(得分:8)
它帮助了我。只需将其添加到您的pom.xml中即可。
默认情况下,maven编译器插件使用Java 1.5或1.6,您必须在pom.xml中重新定义它。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
答案 5 :(得分:3)
对于Eclipse用户。 例如,如果您有一个运行配置来清理包。
在“运行配置”面板中,有一个JRE选项卡,您可以在其中指定应运行的运行时。 请注意,此配置会覆盖pom.xml中的任何内容。
答案 6 :(得分:2)
我迟到了这个问题,但我认为在MacOS上处理JDK版本的最佳方法是使用以下所述的脚本:http://www.jayway.com/2014/01/15/how-to-switch-jdk-version-on-mac-os-x-maverick/
答案 7 :(得分:2)
请检查兼容性。我与jdk 1.6.0_37
和jdk to 1.8.0_60
挣扎了好几个小时。所有变量都已设置但无效。最后,我升级了mvn 3.3.3
和JAVA_HOME=C:\ProgramFiles\Java\jdk1.8.0_60
MVN_HOME=C:\ProgramFiles\apache-maven\apache-maven-3.3.3
M2=%MVN_HOME%\bin extend system level Path- ;%M2%;%JAVA_HOME%\bin;
,这很有效。环境变量如下:
{{1}}
答案 8 :(得分:1)
@MasterGaurav的解决方案非常有效,
我通常把java switch事物放到zsh函数中:
alias java_ls='/usr/libexec/java_home -V 2>&1 | grep -E "\d.\d.\d[,_]" | cut -d , -f 1 | colrm 1 4 | grep -v Home'
function java_use() {
export JAVA_HOME=$(/usr/libexec/java_home -v $1)
echo export "JAVA_HOME=$(/usr/libexec/java_home -v $1)" > ~/.mavenrc
export PATH=$JAVA_HOME/bin:$PATH
java -version
}
然后你可以运行java_ls
两次获取你机器上所有可用的jvm,
运行java_use 1.7
以将1.7版本用于java和maven。