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

如何解决Rocky Linux下JavaFX 17的GraphicsPipeline.createPipeline失败问题

解决NetBeans打包JavaFX Jar后无法加载prism native库的问题

问题根源

NetBeans运行项目时会自动将JavaFX SDK的native库目录(包含libprism_es2.so、libprism_sw.so等文件)加入JVM的java.library.path,但导出Jar包时不会自动保留这个配置,导致单独运行Jar时JVM找不到依赖的native库。


解决方案

1. 运行Jar时手动指定native库路径

直接在启动命令中通过-Djava.library.path参数指向JavaFX SDK的lib目录:

java -Djava.library.path=/path/to/javafx-sdk-17/lib -jar 你的项目Jar包名.jar

注意:替换/path/to/javafx-sdk-17/lib为你本地JavaFX SDK的实际路径。

2. 用构建工具(Maven/Gradle)自动处理native库

如果项目用Maven或Gradle管理,可通过官方插件打包出能自动加载native库的可运行Jar,甚至生成独立运行包:

Maven配置(javafx-maven-plugin)

在pom.xml中添加插件配置:

<plugin>
    <groupId>org.openjfx</groupId>
    <artifactId>javafx-maven-plugin</artifactId>
    <version>0.0.8</version>
    <configuration>
        <mainClass>你的主类全路径(如com.example.Main)</mainClass>
        <nativeImage>false</nativeImage>
    </configuration>
</plugin>
  • 执行mvn javafx:jar生成可运行Jar
  • 执行mvn javafx:run直接运行项目(无需手动指定路径)
  • 可选:执行mvn javafx:jlink生成独立运行包,无需依赖系统中的Java/JavaFX
Gradle配置(javafx-plugin)

在build.gradle中添加:

plugins {
    id 'org.openjfx.javafxplugin' version '0.0.13'
    id 'application'
}

javafx {
    version = '17'
    modules = ['javafx.controls', 'javafx.fxml'] // 根据项目需求添加模块
}

application {
    mainClass = '你的主类全路径(如com.example.Main)'
}
  • 执行gradle build生成Jar
  • 执行gradle run运行项目
  • 可选:执行gradle jlink生成独立镜像包

3. 手动将native库加入系统库路径(不推荐)

将JavaFX SDK lib目录下的所有.so文件复制到/usr/lib或/usr/local/lib,然后执行:

sudo ldconfig

之后直接运行Jar即可,但这种方法会污染系统全局库,仅适合专用开发机器。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 08:42:12