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

Linux Mint下无法运行Windows打包的JavaFX应用Jar包求助

问题:JavaFX Jar包在Linux Mint无法运行,报GtkPlatformFactory找不到错误

我在Windows系统上开发了JavaFX应用,打包生成的Jar包在Windows环境中可正常运行,但在Linux Mint系统中运行该Jar包时出现如下报错日志:

нояб. 07, 2022 3:15:00 PM com.sun.javafx.application.PlatformImpl startup
WARNING: Unsupported JavaFX configuration: classes were loaded from 'unnamed module @6a7840b4'
java.lang.ClassNotFoundException: com.sun.glass.ui.gtk.GtkPlatformFactory
 at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
 at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
 at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
 at java.base/java.lang.Class.forName0(Native Method)
 at java.base/java.lang.Class.forName(Class.java:375)
 at com.sun.glass.ui.PlatformFactory.getPlatformFactory(PlatformFactory.java:42)
 at com.sun.glass.ui.Application.run(Application.java:146)
 at com.sun.javafx.tk.quantum.QuantumToolkit.startup(QuantumToolkit.java:291)
 at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:293)
 at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:163)
 at com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:659)
 at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:679)
 at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:196)
 at java.base/java.lang.Thread.run(Thread.java:833)
Failed to load Glass factory class
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "com.sun.glass.ui.PlatformFactory.createApplication()" because the return value of "com.sun.glass.ui.PlatformFactory.getPlatformFactory()" is null
 at com.sun.glass.ui.Application.run(Application.java:146)
 at com.sun.javafx.tk.quantum.QuantumToolkit.startup(QuantumToolkit.java:291)
 at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:293)
 at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:163)
 at com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:659)
 at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:679)
 at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:196)
 at java.base/java.lang.Thread.run(Thread.java:833)

已在Linux系统上安装openjfx,使用的JDK版本为openjdk 17.0.4。


解决方案
  • 确认OpenJFX与JDK版本匹配:检查安装的openjfx版本是否和openjdk 17.0.4兼容,不同版本可能引发依赖问题。执行apt show openjfx查看当前版本,若不匹配则重新安装对应版本的openjfx。
  • 运行Jar时指定JavaFX模块路径:使用命令行运行Jar时,明确指定JavaFX的模块路径和所需模块,示例命令:
    java --module-path /usr/share/openjfx/lib --add-modules javafx.controls,javafx.fxml,javafx.graphics -jar your-app.jar
    
    替换your-app.jar为实际的Jar文件名,若应用依赖其他JavaFX模块,可追加到--add-modules参数后。
  • 改用模块化打包工具:如果之前采用传统非模块化打包方式,建议使用JavaFX官方的jlink或jpackage工具重新打包,生成适配Linux的镜像或安装包,这类工具会自动包含对应平台的依赖组件,避免运行时缺失。
  • 安装系统依赖库:Linux Mint可能缺少Gtk相关的底层依赖,执行以下命令安装必要组件:
    sudo apt install libgtk-3-dev libgl1-mesa-glx
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 19:25:44