【发布时间】:2019-07-13 07:48:32
【问题描述】:
我正在尝试使用以下 JavaFX - Maven 模板(eclipse:版本:2018-09 (4.9.0) Build id:2018)生成和执行一个简单的可运行 jar
它带有一个简单的 JavaFX GUI,我在 Eclipse IDE 上编译的程序很好(我使用的是 JDK 10,jre 10.0.2),但是我不知道如何生成一个可执行的 jar 文件并运行它,如果我使用 Eclipse export->Runnable jar 执行此操作,我会在 main.java 文件的第 14 行收到著名的“java.lag.NullPointerException:需要位置”错误消息。
我搜索了这个错误但无法修复它,因为我只使用一个 fxml 文件并且它已经在 resources/fxml 目录中我不知道为什么它仍然从 getResource() 获得空值方法...
问题在于这行代码:
Parent root = FXMLLoader.load(getClass().getResource("/fxml/Scene.fxml"));
公共类 MainApp 扩展应用程序 {
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("/fxml/Scene.fxml"));
Scene scene = new Scene(root);
scene.getStylesheets().add("/styles/Styles.css");
stage.setTitle("JavaFX and Maven");
stage.setScene(scene);
stage.show();
}
/**
* The main() method is ignored in correctly deployed JavaFX application.
* main() serves only as fallback in case the application can not be
* launched through deployment artifacts, e.g., in IDEs with limited FX
* support. NetBeans ignores main().
*
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
}
是eclipse生成jar的方式有问题,还是为maven项目生成可运行jar的更好方式?
【问题讨论】:
-
您是否尝试过使用更简单的 Export: Jar File 而不是 Runnable Jar File?我从来没有能够让可运行的版本工作并且一直使用更简单的版本。而且,这个导出确实包括一个清单,所以我不明白说明区别是只有 Runnable 版本有一个清单的文档。我不熟悉 Maven,所以这个评论可能根本没有帮助。
-
我尝试生成一个简单的 jar,但是当我单击它时没有任何反应,当我尝试使用“java -jar myjar.jar”命令运行时它告诉我没有清单文件。所以我无法执行jar文件。编辑:我还尝试通过eclipse javaFX项目生成一个简单的java项目(不使用maven,也不使用fxml文件),双击生成的jar仍然给我同样的错误,但通过命令行运行它就可以了,所以问题是在运行 jar 时定位 fxml 文件...