【发布时间】:2016-03-16 22:56:19
【问题描述】:
我有一个项目要导出到 JAR 文件。构建 JAR 本身工作正常,似乎所有必要的文件都包含在 JAR 中。我遇到的问题是当我在我的一个类中有这样的代码时:
Class.forName("org.sqlite.JDBC");
c = DriverManager.getConnection("jdbc:sqlite:player/resources/test.db");
它也不适用于此代码:
FXMLLoader load = new FXMLLoader(getClass().getResource("commonGUI.fxml"));
通过 IntelliJ 运行项目工作正常,但是在构建和运行 JAR 文件时,我得到了这个异常:
java.sql.SQLException: path to 'player/resources/test.db': '/Users/Kristian/Documents/Uni/Freelance/SEProjects/SE18/working/Plookify/out/artifacts/Plookify_jar/player' does not exist
或者这取决于我要加载的文件:
Caused by: javafx.fxml.LoadException:
file:/Users/Kristian/Documents/Uni/Freelance/SEProjects/SE18/working/Plookify/out/artifacts/Plookify_jar/Plookify.jar!/common/commonGUI.fxml
at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2601)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2579)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3214)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3175)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3148)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3124)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3104)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:3097)
at common.openMainGUI.start(openMainGUI.java:21)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(LauncherImpl.java:863)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(PlatformImpl.java:326)
at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
Caused by: java.lang.IllegalStateException: Location is not set.
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2434)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2409)
at common.commonGUIController.loadPlayerPane(commonGUIController.java:43)
at common.commonGUIController.initialize(commonGUIController.java:31)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2548)
... 14 more
如何解决这样的问题?
已解决
问题已解决。为了解决 SQLException,DB 文件必须放在 JAR 文件之外。对于FXML错误,需要修改项目代码中的路径。
【问题讨论】:
标签: java intellij-idea jar