You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何运行Java GUI Jar包时出现java.lang.UnsupportedClassVersionError?

解决Java预览特性Jar双击运行报错问题

问题根源

你的代码使用了Java 20的预览特性(比如虚拟线程、模式匹配增强等),这类特性需要在编译和运行时显式通过--enable-preview参数启用。VSCode中运行正常是因为编辑器的运行配置自动添加了该参数,但双击Jar文件时,系统默认用java -jar命令启动,未携带该参数,导致报错。

解决方案

方案1:移除预览特性(最简便)

检查代码中使用的预览特性,替换为Java正式支持的语法或API:

  • 比如若用了虚拟线程(Thread.startVirtualThread()),可暂时用普通线程替代;
  • 若用了模式匹配的新语法,改用传统写法。
    修改后重新编译打包,双击Jar即可正常运行,无需额外参数。

方案2:保留预览特性,通过包装脚本/应用实现双击运行

如果必须保留预览特性,可通过Mac的脚本或应用包裹Jar,自动添加--enable-preview参数:

方法A:创建可执行Shell脚本(.command)

  1. 打开「文本编辑」,输入以下内容:
#!/bin/bash
# 若脚本与Jar文件在同一目录,用下面的路径;否则替换为Jar的绝对路径
JAR_PATH="$(dirname "$0")/app.jar"
java --enable-preview -jar "$JAR_PATH"
  1. 保存文件为RunMyApp.command(文件名自定义,后缀必须为.command)。
  2. 打开终端,进入脚本所在目录,执行命令赋予执行权限:
chmod +x RunMyApp.command
  1. 以后双击该.command文件,即可自动带参数运行Jar。

方法B:创建Mac应用包(.app)

  1. 打开「自动操作」(Automator),选择新建「应用程序」。
  2. 在左侧动作库中找到「运行Shell脚本」,拖到右侧编辑区域。
  3. 输入脚本内容(替换为你的Jar路径):
java --enable-preview -jar "/Users/yourname/Documents/your-project/app.jar"
  1. 点击顶部「文件」→「存储」,命名为MyJavaApp.app,保存到合适位置。
  2. 双击该.app文件即可运行,和普通Mac应用无异。

注意事项

  1. 确保编译Jar时已启用预览特性:
    手动编译打包命令示例:
    # 编译代码(带预览参数)
    javac --enable-preview --release 20 *.java
    # 创建Manifest.mf文件,内容为:Main-Class: App
    # 打包Jar
    jar cfm app.jar Manifest.mf *.class
    
  2. 若Jar依赖SQL Server驱动等外部Jar,需确保依赖已正确处理:可将依赖Jar放到同一目录,或在脚本中添加-cp参数指定依赖路径(例如java --enable-preview -cp "app.jar:sqljdbc.jar" App)。

内容的提问来源于stack exchange,提问作者SpottableFir22

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 17:02:21