当前位置: 首页 > 知识库问答 >
问题:

如何修复“错误:JavaFX运行时组件丢失,并且是运行此应用程序所必需的”

景阳曜
2023-03-14

我的JavaFX应用程序从源代码处运行得非常好,但是当我编译到单个jar文件时,我得到了错误:

错误:缺少JavaFX运行时组件,而这些组件是运行此应用程序所必需的。

我使用Maven作为我的存储库管理器,并且我的Maven安装是成功的。

注意:在我的IntelliJ构建工件中,我可以看到IntelliJ包含JavaFX及其所有库

共有1个答案

寇景明
2023-03-14

a)对于我的maven项目,技巧是使用一个额外的starter类,它不是从javafx.application.application继承的:

public class GUIStarter {

    public static void main(final String[] args) {
        GUI.main(args);
    }

}

JavaFx依赖项包含在我的pom.xml中,如下所示:

<!-- JavaFx -->
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-base</artifactId>
            <version>12</version>
        </dependency>

        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-controls</artifactId>
            <version>12</version>
        </dependency>

        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-graphics </artifactId>
            <version>12</version>
            <classifier>win</classifier>
        </dependency>

        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-fxml</artifactId>
            <version>12</version>
        </dependency>

        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-web</artifactId>
            <version>12</version>
        </dependency>

        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-media</artifactId>
            <version>12</version>
        </dependency>

         <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-swing</artifactId>
            <version>12</version>
        </dependency>

为了在构建中包含fxml文件,您可能需要将它们定义为资源:

!-- define JavaFx files as resources to include them in the jar -->
<resource>
      <directory>${basedir}/src/main/java/foo/baa/view</directory>
      <filtering>false</filtering>  
      <targetPath>foo/baa/view</targetPath>            
</resource>

b)作为另一种选择,可以使用一个额外的maven插件“javafx-maven-plugin”来构建javafx应用程序,请参阅https://openjfx.io/openjfx-docs/#maven的示例项目(这对我不起作用)。我有几个pom文件,希望在一个子项目中引用javafx依赖项。javafx-maven-plugin找不到我的主类。)

 类似资料: