错误:缺少 JavaFX 运行时组件,需要使用 eclipse 在生成的 jar 中运行此应用程序

问题描述 投票:0回答:1

在命令提示符下或双击运行 JavaFX jar 文件时出现上述错误。 我希望 jar 文件像应用程序一样通过双击它来运行。 我尝试创建另一个类并从继承 JavaFX Application 类的类中调用主函数。 请有人帮助解决这个错误。

enter image description here

请找到这张图片

launch.class代码:

package com.application;

public class launch {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    Main.main(args);
}

}

Main.class code:

package com.application;

import java.io.File;

 import javafx.application.Application;

import javafx.application.Platform;

import javafx.event.EventHandler;

import       javafx.fxml.FXMLLoader;

 import       javafx.stage.Stage;

import               javafx.stage.WindowEvent;

 import              javafx.scene.Parent;

 import javafx.scene.Scene;

public class Main extends Application {

@Override

public void start(Stage primaryStage) {

    try {
        File del;
        try {
            del = new File("errorscanReport.txt");
            del.delete();
        } catch (Exception e) {
            // TODO Auto-generated catch block
        }
        
        try {
            del = new File("errorss.txt");
            del.delete();
        } catch (Exception e) {
            // TODO Auto-generated catch block
        }
        
        try {
            del = new File("error.txt");
            del.delete();
        } catch (Exception e) {
            // TODO Auto-generated catch block
        }
        try {
            File f = new File("AutoMoveError.txt");
            f.delete();
        }catch (Exception em) {
            // TODO: handle exception
        }
        
        Parent root = FXMLLoader.load(getClass().getResource("MainScene.fxml"));
        Scene scene = new Scene(root);
        primaryStage.setHeight(500);
        primaryStage.setWidth(700);
        primaryStage.setTitle("HUMANOID");
        primaryStage.setScene(scene);
        primaryStage.show();
        
        primaryStage.setOnCloseRequest(new EventHandler<WindowEvent>() {
            
            @Override
            public void handle(WindowEvent arg0) {
                // TODO Auto-generated method stub
                MainSceneController.stop_flag = true;
                Platform.exit();
            }
        });
        
    } catch(Exception e) {
        System.out.println(e.toString());
    }
}

public static void main(String[] args) {
    launch(args);
}

}
java javafx components runtime executable-jar
1个回答
0
投票

您需要创建一个胖 JAR。

看一下这个示例项目。它们都包含创建 fat JAR 的任务/目标。您只需双击它即可启动应用程序。

您可以下载其中一个项目并对其进行编辑,也可以查看它是如何完成的。

使用 gradle 运行 JavaFX 应用程序示例 https://github.com/davidweber411/JavaFxAppGradleNonModular

使用 Maven 运行 JavaFX 应用程序示例 https://github.com/davidweber411/JavaFxAppMavenNonModular

注意:这是非模块化应用程序。

© www.soinside.com 2019 - 2024. All rights reserved.