为什么 Maven 使用 JDK 1.6 但我的 java 版本是 1.7
- 2024-10-31 08:38:00
- admin 原创
- 43
问题描述:
我已经在终端中设置了 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"
解决方案 1:
将以下内容添加到您的~/.mavenrc
:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/{jdk-version}/Contents/Home
第二种解决方案:
echo export "JAVA_HOME=$(/usr/libexec/java_home)" >> ~/.bash_profile
解决方案 2:
进入
/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
现在它就可以立即起作用了。
解决方案 3:
你也可以这样做,
<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>
解决方案 4:
您还可以明确告诉 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 运行器正在使用的默认编译器。
解决方案 5:
它对我有帮助。只需将其添加到您的 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>
解决方案 6:
对于 Eclipse 用户。例如,如果您有一个执行清理包的运行配置。
在运行配置面板中有一个 JRE 选项卡,您可以在其中指定应针对哪个运行时运行。请注意,此配置将覆盖 pom.xml 中的任何内容。
解决方案 7:
我对这个问题迟到了,但我认为处理 MacOS 上的 JDK 版本的最佳方法是使用以下脚本:http: //www.jayway.com/2014/01/15/how-to-switch-jdk-version-on-mac-os-x-maverick/
解决方案 8:
请检查兼容性。我花了mvn 3.2.1
好jdk 1.6.0_37
几个小时才搞定。所有变量都设置好了,但不起作用。最后我升级了jdk to 1.8.0_60
,并且mvn 3.3.3
成功了。环境变量如下:
JAVA_HOME=C:ProgramFilesJavajdk1.8.0_60
MVN_HOME=C:ProgramFilesapache-mavenapache-maven-3.3.3
M2=%MVN_HOME%in extend system level Path- ;%M2%;%JAVA_HOME%in;
解决方案 9:
@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。
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件