当我是 运行 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