java.version返回异常值:Mac下切换JRE运行旧代码遇问题
问题分析与解决方法
一、终端执行java -jar仍用旧JRE的原因及修复
你进入JRE_new的bin目录后直接执行java -jar,终端其实可能调用的是PATH环境变量中优先级更高的旧JRE的java命令,而不是当前目录下的java。
解决步骤:
- 执行当前目录的java命令时,要加上
./前缀,确保调用的是当前目录的JRE:./java -jar <jar文件路径> - 先验证版本是否正确,执行
./java -version,确认输出是JRE_new的版本后再启动jar包。
二、双击.app启动无效的原因及修复
Mac的.app应用包通常会在自身的Info.plist文件中硬编码JVM路径或版本要求,系统的JAVA_HOME设置不会覆盖这个配置,所以即使你设置了JAVA_HOME,app还是会用内置指定的旧JRE。
解决步骤:
- 右键点击MyApp.app,选择「显示包内容」
- 进入
Contents目录,找到Info.plist文件并打开编辑 - 查找与Java相关的配置项:
- 如果有
JVMRuntimeLocation键,将其值修改为JRE_new的完整路径,比如/Library/Java/JavaVirtualMachines/jre-new-version/Contents/Home - 如果有
JVMVersion键,修改为JRE_new对应的版本号(比如1.8*对应Java 8)
- 如果有
- 保存修改后,重新双击启动app即可
额外验证点
- 先确认JRE_new本身的版本是否正确,执行绝对路径的java命令:
/path/to/JRE_new/Contents/Home/bin/java -version - 如果MyApp.app内部自带了JRE(比如
Contents/PlugIns目录下有JRE文件夹),直接替换这个文件夹为JRE_new的内容即可。
内容的提问来源于stack exchange,提问作者skiaddict1
相关产品推荐
相关产品推荐

