在命令提示符下或双击运行 JavaFX jar 文件时出现上述错误。 我希望 jar 文件像应用程序一样通过双击它来运行。 我尝试创建另一个类并从继承 JavaFX Application 类的类中调用主函数。 请有人帮助解决这个错误。
请找到这张图片
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);
}
}
您需要创建一个胖 JAR。
看一下这个示例项目。它们都包含创建 fat JAR 的任务/目标。您只需双击它即可启动应用程序。
您可以下载其中一个项目并对其进行编辑,也可以查看它是如何完成的。
使用 gradle 运行 JavaFX 应用程序示例 https://github.com/davidweber411/JavaFxAppGradleNonModular
使用 Maven 运行 JavaFX 应用程序示例 https://github.com/davidweber411/JavaFxAppMavenNonModular
注意:这是非模块化应用程序。