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

Windows可运行的JavaFX JAR在Ubuntu运行时出现主类找不到错误如何解决?

解决Ubuntu下运行JavaFX JAR出现的Error: Could not find or load main class问题

这个问题的核心原因很明确:Ubuntu默认安装的OpenJDK不包含JavaFX模块。从JDK 11开始,JavaFX就被从标准JDK中剥离,成为独立的开源项目了。你在Windows上能正常运行,大概率是因为使用的JDK自带了JavaFX(比如Oracle JDK或Azul Zulu的FX专属版本),但Ubuntu默认的OpenJDK并没有集成这部分内容。下面给你几个实用的解决办法:

方法一:更换内置JavaFX的JDK发行版

这是最省心的方案,直接换一个自带JavaFX的JDK就行,比如Azul Zulu FX或者BellSoft Liberica FX:

  • 以Azul Zulu FX为例,通过官方PPA安装步骤如下:
    1. 添加PPA源:
      sudo add-apt-repository ppa:azul/zulu-ppa
      sudo apt update
      
    2. 安装对应版本的Zulu FX JDK(比如常用的JDK 17):
      sudo apt install zulu17-fx-jdk
      
    3. 切换系统默认JDK到Zulu FX:
      sudo update-alternatives --config java
      
      在弹出的选项里选择Zulu FX对应的条目即可。之后直接用java -jar your-app.jar运行,应该就能正常启动了。

方法二:手动指定JavaFX模块路径运行

如果你不想更换系统JDK,可以单独下载JavaFX SDK,然后在运行JAR时手动指定模块路径:

  1. 从OpenJFX官网下载和你开发时JDK版本匹配的Linux版JavaFX SDK,解压到固定目录,比如/opt/javafx-sdk。
  2. 运行JAR时使用如下命令(替换成你的JAR文件名、主类需求的JavaFX模块和SDK路径):
    java --module-path /opt/javafx-sdk/lib --add-modules javafx.controls,javafx.fxml -jar your-app.jar
    
    • --module-path:指定JavaFX模块所在的lib目录
    • --add-modules:添加你的应用实际用到的JavaFX模块(比如javafx.controls、javafx.fxml,如果用到了其他模块也要一并加上)

方法三:打包包含JavaFX的独立可执行包

如果希望你的JAR能在任何Linux环境直接运行,不用依赖系统JDK,可以用Maven或Gradle的插件把JavaFX模块和JRE一起打包:

  • 比如用Maven的javafx-maven-plugin,配置时启用jlink或jpackage目标,生成一个包含完整运行环境的独立包。这样用户拿到手直接就能运行,完全不用管系统有没有JavaFX。

额外排查小提示

  • 确认你的JAR包的MANIFEST.MF文件里正确指定了Main-Class,且这个主类确实继承了javafx.application.Application。
  • 检查Ubuntu上的JDK版本,确保和你开发时使用的版本一致,避免版本不兼容导致的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 10:02:29