如何在JDK 8与JDK 10间切换系统默认JDK?
解决JDK 8与JDK 10共存时双击Jar文件默认用JDK 10的问题
我之前也碰到过完全一样的困扰!当同时安装JDK 8和JDK 10后,命令行的Java版本依赖环境变量,但双击Jar文件的打开逻辑是由Windows的文件关联机制决定的,和你设置的JAVA_HOME、PATH没有直接关系。Oracle的JDK 10安装程序会自动注册Jar文件的默认打开方式,优先级远高于手动配置的环境变量,这就是问题的核心。
方案一:手动修改Jar文件的默认打开程序
这是最直观的方法,直接指定JDK 8的javaw.exe来打开Jar:
- 右键点击任意一个可执行Jar文件,选择「打开方式」→「选择其他应用」
- 滚动到列表底部,选择「更多应用」,再点击「在这台电脑上查找其他应用」
- 定位到你的JDK 8安装目录,找到
bin文件夹下的javaw.exe(例:C:\Program Files\Java\jdk1.8.0_391\bin\javaw.exe) - 勾选「始终使用此应用打开.jar文件」,点击确定即可
方案二:用命令行重置Jar文件关联(更可靠)
如果怕手动找路径出错,或者需要批量配置,可以用管理员权限执行命令:
- 以管理员身份打开命令提示符(CMD)
- 执行以下命令(替换成你自己的JDK 8安装路径):
ftype jarfile="C:\Program Files\Java\jdk1.8.0_391\bin\javaw.exe" -jar "%1" %*
- 接着执行关联命令:
assoc .jar=jarfile
- 重启资源管理器(或直接重启电脑),设置即可生效
方案三:修复「配置Java」面板看不到JDK 8的问题
如果你想统一系统级的Java版本配置,可以这样操作:
- 直接找到JDK 8安装目录下的
bin/javacpl.exe,双击打开(这是JDK 8专属的Java控制面板,不会被JDK 10覆盖) - 切换到「Java」选项卡,点击「查看」按钮
- 在弹出的窗口中,把JDK 8的条目拖动到最上方,设置为默认运行环境
- 可以把这个
javacpl.exe创建快捷方式到桌面,方便后续管理
关键注意点
- 不要直接修改注册表的Jar关联项:Oracle的JDK安装程序会自动维护这些注册表键值,手动修改很容易被后续的JDK更新覆盖,用上面的
ftype和assoc命令更稳定 - 环境变量只影响命令行和依赖环境变量启动的程序:双击Jar文件是Windows文件系统的行为,和
JAVA_HOME、PATH没有关联,这也是为什么你改了环境变量后cmd显示正常,但双击Jar还是用JDK 10的原因
内容的提问来源于stack exchange,提问作者DS_




