为什么maven使用jdk 1.6,但是我的java -version是1.7
我是新手,也是MacOS。 我已经在我的terminal中设置了maven,在获取版本设置(使用mvn -v
)时,似乎使用JDK 1.6,而我已经安装了JDK 1.7。 有什么不对吗?
我input的命令是:
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"
将以下内容添加到~/.mavenrc
:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/{jdk-version}/Contents/Home
第二个scheme:
echo export "JAVA_HOME=\$(/usr/libexec/java_home)" >> ~/.bash_profile
进入
/System/Library/Frameworks/JavaVM.framework/Versions
并更新CurrentJDK
符号链接指向
/Library/Java/JavaVirtualMachines/YOUR_JDK_VERSION/Contents/
例如
cd /System/Library/Frameworks/JavaVM.framework/Versions sudo rm CurrentJDK sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/ CurrentJDK
现在它应该立即工作。
你也可以做,
<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>
你也可以明确告诉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中,那么您的Maven runner可能会在默认编译器中使用Maven设置。
它帮助了我。 只需将其添加到您的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>
对于Eclipse用户。 如果你有一个运行configuration,干净的包例如。
在“运行configuration”面板中,有一个JRE选项卡,您可以在其中指定运行它的运行时间。 请注意,此configuration将覆盖pom.xml中的所有内容。
我迟到了这个问题,但我认为在MacOS上处理JDK版本的最好方法是使用下面描述的脚本: http : //www.jayway.com/2014/01/15/how-to-switch-jdk -version上-MAC-OS-X-特立独行/
请检查兼容性。 我挣扎了mvn 3.2.1
和jdk 1.6.0_37
好几个小时。 所有的variables都已设置,但没有工作。 最后,我把jdk to 1.8.0_60
升级jdk to 1.8.0_60
和mvn 3.3.3
。 环境variables如下:
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;
@MasterGaurav的解决scheme是完美的工作,
我通常把java开关的东西变成一个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
来为java和maven使用1.7版本。