当我是 运行 Jar 文件时出错。 IllegalStateException:未设置位置
got error when I am running Jar file. IllegalStateException: Location is not set
我正在使用 Maven 开发 Javafx 应用程序。我可以 运行 我的应用程序来自 Intellij idea,没有任何异常和错误。但是当我 运行ning Jar 文件时出现错误。如何解决这个问题?
我认为,以下异常发生在该行:
FXMLLoader loader = new FXMLLoader(this.getClass().getResource("../screen/AdminScreen.fxml"));
请帮帮我好吗?
这是我的例外:
Exception in thread "JavaFX Application Thread"
java.lang.IllegalStateException: Location is not set.
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2459)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2435)
at login.LoginController.signInAction(LoginController.java:101)
at login.LoginController.lambda$addListeners(LoginController.java:65)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
at javafx.event.Event.fireEvent(Event.java:198)
at javafx.scene.Node.fireEvent(Node.java:8890)
尝试更改:
FXMLLoader loader = new FXMLLoader(this.getClass().getResource("../screen/AdminScreen.fxml"));
为此:
FXMLLoader loader = new FXMLLoader(this.getClass().getResource("AdminScreen.fxml"));
由于 ..
不是有效的 Java 标识符,因此无法保证此问题可解析。尝试以下操作:
FXMLLoader loader = new FXMLLoader(getClass().getResource("/screen/AdminScreen.fxml"))
或者,以下 link 解释了 java 资源使用情况:https://docs.oracle.com/javase/8/docs/technotes/guides/lang/resources.html
我正在使用 Maven 开发 Javafx 应用程序。我可以 运行 我的应用程序来自 Intellij idea,没有任何异常和错误。但是当我 运行ning Jar 文件时出现错误。如何解决这个问题?
我认为,以下异常发生在该行:
FXMLLoader loader = new FXMLLoader(this.getClass().getResource("../screen/AdminScreen.fxml"));
请帮帮我好吗?
这是我的例外:
Exception in thread "JavaFX Application Thread"
java.lang.IllegalStateException: Location is not set.
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2459)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2435)
at login.LoginController.signInAction(LoginController.java:101)
at login.LoginController.lambda$addListeners(LoginController.java:65)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
at javafx.event.Event.fireEvent(Event.java:198)
at javafx.scene.Node.fireEvent(Node.java:8890)
尝试更改:
FXMLLoader loader = new FXMLLoader(this.getClass().getResource("../screen/AdminScreen.fxml"));
为此:
FXMLLoader loader = new FXMLLoader(this.getClass().getResource("AdminScreen.fxml"));
由于 ..
不是有效的 Java 标识符,因此无法保证此问题可解析。尝试以下操作:
FXMLLoader loader = new FXMLLoader(getClass().getResource("/screen/AdminScreen.fxml"))
或者,以下 link 解释了 java 资源使用情况:https://docs.oracle.com/javase/8/docs/technotes/guides/lang/resources.html