Movatterモバイル変換


[0]ホーム

URL:


Windows11设置Jar包打开方式

最新推荐文章于 2025-12-16 16:02:25 发布
原创最新推荐文章于 2025-12-16 16:02:25 发布·719 阅读
· 14
· 18·
CC 4.0 BY-SA版权
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
文章标签:

#jar#java

Windows11设置Jar包打开方式

问题的发生

我通过java -jar可以运行,但是通过指定java.exe运行不了

PS E:\Desktop> E:\Java\jdk1.8.0_351\jre\bin\java.exe .\ChatGPT.jar # 错误: 找不到或无法加载主类 .\ChatGPT.jar PS E:\Desktop> java -jar .\ChatGPT.jar

你这个问题本质上是调用方式不同 导致的:


1.java -jar 的行为

当你执行:

java -jar .\ChatGPT.jar

时,JVM 会直接按照JAR 包的MANIFEST.MF 中的Main-Class 配置 来启动主类。 所以不需要你额外指定主类名。


2.E:\Java\jdk1.8.0_351\jre\bin\java.exe .\ChatGPT.jar 的行为

这种写法,实际上等价于:

java .\ChatGPT.jarb

它会把.\ChatGPT.jar 当成主类名,而不是 JAR 文件。 JVM 会尝试去找名为.\ChatGPT.jar 的类(这当然不存在),所以报错:

错误: 找不到或无法加载主类 .\ChatGPT.jar

✅ 正确写法

如果你想直接指定 java.exe 路径运行 jar,应该用:

E:\Java\jdk1.8.0_351\jre\bin\java.exe -jar .\ChatGPT.jar

为什么通过Java官网安装的Java支持直接打开jar包而非使用java -jar 来运行

  1. Java 官网安装包做了什么?

当你用Oracle 官网的安装包(.exe / .msi) 安装 JDK/JRE 时,它会自动帮你在Windows 注册表 里写入关联信息,包括:

  • .jar 文件扩展名 → 绑定到jarfile

  • jarfile\shell\open\command → 设为

    "C:\Program Files\Java\jre1.8.0_xxx\bin\javaw.exe" -jar "%1" %*

    (注意这里已经有-jar 参数了!)

这样 Windows 资源管理器就知道:双击 jar 文件时要用javaw.exe -jar 来运行。 所以你感觉“直接双击 jar 就能跑”,其实是因为注册表里已经写好了-jar


  1. 为什么你手动指定java.exe .\ChatGPT.jar 会报错?

因为这是绕过了注册表机制,相当于你直接告诉 JVM:

“执行主类叫.\ChatGPT.jar

自然会报:

错误: 找不到或无法加载主类 .\ChatGPT.jar

只有java -jar xxx.jar 才会按照 JAR 的META-INF/MANIFEST.MF 找到主类并运行。


  1. 如果你安装的是压缩包版 JDK(ZIP 解压版)

那种版本不会帮你写注册表,所以双击 JAR 时,Windows 不知道用什么方式运行。 这种情况下你就需要:

  • 自己手动修改注册表(方法二),

  • 或者用 Jarfix 修复关联。


总结

  • 官网安装版 Java = 自动写注册表,双击 JAR =javaw.exe -jar "%1"

  • ZIP/手动安装版 Java = 没写注册表,双击 JAR 不能跑

  • 命令行java xxx.jar = 错误用法,等于把 jar 文件名当类名

  • 命令行java -jar xxx.jar = 正确用法

解决方案

把 Windows 的.jar 默认打开方式修复成用 Java 正确执行-jar

把下面内容复制进去,保存为register_java_reg.reg(注意后缀要是.reg 而不是.txt):

Windows Registry Editor Version 5.00​[HKEY_CURRENT_USER\Software\Classes\.jar]@="jarfile"​[HKEY_CURRENT_USER\Software\Classes\jarfile\shell\open\command]@="\"E:\\Java\\jdk1.8.0_351\\bin\\javaw.exe\" -jar \"%1\" %*"

说明

  • E:\\Java\\jdk1.8.0_351\\bin\\javaw.exe 👉 请改成你本机 Java 实际安装路径(比如C:\Program Files\Java\jdk1.8.0_351\jre\bin\javaw.exe)。

  • javaw.exe 是无控制台版本,如果你希望双击 JAR 时还能看到控制台输出,可以改成java.exe

java.exe和javaw.exe的区别

java.exe

  • 启动 Java 程序时会附带一个黑色控制台窗口 (cmd)

  • 适合运行命令行工具(能看到日志输出)

javaw.exe

  • 启动时不会出现控制台窗口

  • 适合运行图形界面 (Swing/JavaFX) 程序

  • 如果你的程序本身不打印日志,就显得更“干净”

删除 jar 关联的 .reg 文件

把下面内容复制进去,保存为remove_java_reg.reg(注意后缀要是.reg 而不是.txt):

Windows Registry Editor Version 5.00​[-HKEY_CLASSES_ROOT\.jar]​[-HKEY_CLASSES_ROOT\jarfile]

使用方法

  1. 保存为register_java_reg.reg / remove_java_reg.reg

  2. 双击 → 允许修改注册表

  3. 之后双击.jar 文件就会用java -jar 来运行了。

确定要放弃本次机会?
福利倒计时
::

立减 ¥

普通VIP年卡可用
立即使用
参与评论您还未登录,请先登录后发表或查看评论
Windows11设置开机自启动jar可以通过以下步骤实现:. 将你的jar放置在一个合适的位置,比如创建一个文件夹用于存放所有的启动项。2. 打开开始菜单,搜索并打开“任务管理器”。3. 在任务管理器中,切换到“启动”选项卡。4. 在启动选项卡中,你可以看到系统启动时自动运行的程序列表。5. 右键点击空白处,选择“打开文件位置”。6. 这将打开一个文件夹,里面含了所有启动项的快捷方式。7. 在这个文件夹中,创建一个新的快捷方式。8. 右键点击新创建的快捷方式,选择“属性”。9. 在属性窗口中,将“目标”字段设置为你的jar的路径。例如:`"C:\path\to\your\jar\file.jar"`。10. 确认设置后,关闭属性窗口。11. 重新启动计算机,你的jar应该会在系统启动时自动运行。

博客等级

码龄4年
59
原创
311
点赞
542
收藏
639
粉丝
关注
私信

热门文章

分类专栏

上一篇:
中通笔试ShowMeBug编程题复盘
下一篇:
FastAPI中请求路由匹配规则BUG记录

最新评论

大家在看

最新文章

目录

展开全部

收起

目录

展开全部

收起

上一篇:
中通笔试ShowMeBug编程题复盘
下一篇:
FastAPI中请求路由匹配规则BUG记录

目录

评论
被折叠的  条评论为什么被折叠?到【灌水乐园】发言
查看更多评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝规则
hope_wisdom
发出的红包

打赏作者

木芒果呀

你的鼓励将是我创作的最大动力

¥1¥2¥4¥6¥10¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

[8]ページ先頭

©2009-2025 Movatter.jp