当前位置: 首页 > 知识库问答 >
问题:

Java FX Java . lang . illegalstateexception:未设置位置

彭弘方
2023-03-14

救命啊!我卡住了..我尝试运行我的主javafx应用程序

这是我的代码。

@Override
public void start(Stage primaryStage) throws Exception {
    try {
        FXMLLoader loader = new FXMLLoader();
        loader.setLocation(getClass().getResource("/com/utmkl/fxml/SimulatorDisplay.fxml"));
        Parent content = (Parent)loader.load(); 

    primaryStage.setResizable(false);
    primaryStage.initStyle(StageStyle.UTILITY);
    primaryStage.setScene(new Scene(content));
    primaryStage.show();            
} catch(Exception e) {
    e.printStackTrace();
}

下面是我的文件夹结构:图片文件夹结构

下面是错误

java.lang.IllegalStateException: Location is not set.
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2434)
    at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2409)
    at com.utmkl.VMCSManager.start(VMCSManager.java:43)
    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)
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191)
    at java.lang.Thread.run(Thread.java:745)

共有2个答案

艾自强
2023-03-14

即使您使用< code > loader . set location(getClass()设置了一个位置。get resource("/com/utmkl/fxml/controller display . fxml ");很可能资源URL实际上并没有引用类路径上的现有资源。

如果添加< code > system . out . println(getClass()。get resource("/com/utmkl/fxml/controller display . fxml ");添加到您的代码中,我认为结果会打印出< code>null。

赏成益
2023-03-14

我找到了答案…

资源需要与主类在同一个文件夹结构中

下面是我的Maven-JavaFX文件夹结构

VMCS
- src/main/java
     - com.utmkl
          VMCSManager.java
- src/main/resources
     - com.utmkl.fxml
          SimulatorDisplay.fxml

所以,正确的代码(成功运行)

VMCSManager.java

@Override
    public void start(Stage primaryStage) throws Exception {
        try {
            FXMLLoader loader = new FXMLLoader();
            loader.setLocation(getClass().getResource("fxml/SimulatorDisplay.fxml"));
            Parent content = loader.load(); 

            Scene scene = new Scene(content);

            primaryStage.setResizable(false);
            primaryStage.initStyle(StageStyle.UTILITY);

            primaryStage.setScene(scene);
            primaryStage.show();            
        } catch(Exception e) {
            e.printStackTrace();
        }
    }
 类似资料:
  • 当我运行我的应用程序时,我有“应用程序启动方法[警告]java.lang.reflect.InvocationTargetException异常”。我尝试使用fxml路径但仍然不起作用。当使用try/catch时,我有“位置未设置错误”。 我还得到了“未能在项目Test-generator-Maven上执行目标org.codehaus.mojo:exec-maven-plugin:1.2.1:ja

  • 我在尝试运行我的代码时遇到了这个错误,这是一个简单的javafx代码来加载一个fxml文件,我尝试了我在这里找到的解决方案,但没有一个对我有效。很抱歉,如果格式不是很好,这是我在这里的第一个帖子,并且很抱歉,如果我在屠杀语言,英语不是我的第一语言。提前道谢! 这是事情的组织方式

  • 我的项目在eclipse中运行得很好,但当我在cmd中运行该项目的jar时,我得到错误似乎我的FXML没有正确加载。我知道这个问题被问了很多次,但没有一个能解决我的问题。我试着用 但我还是有错误。 这是我的项目的结构 在Eclipse中运行的方法:

  • 问题内容: 当选择menuItem时,尝试关闭当前场景并打开另一个场景时出现问题。我的主要阶段编码如下: 执行该程序后,它将转到cartHomePage.fxml。选择菜单项后,我可以从那里选择创建产品或创建类别。这是我的动作事件: 但是,我只能切换一次舞台。例如,我的默认页面是cartHomePage.fxml。运行程序时,首先要创建产品阶段。在那之后,我不能再去任何地方了。错误消息是: 我关上

  • 我的项目在eclipse中正常运行,但当我创建该项目的jar文件并试图通过cmd运行它时,它显示“Location is not set”错误。 我的项目结构是: 方法是(在eclipse中运行):

  • 当选择menuItem时,尝试关闭当前场景并打开另一个场景时,我遇到了问题。我的主阶段编码如下: 当程序执行时,它将转到carthomepage.fxml。从那里,我可以选择去创建产品或创建类别时,菜单项被选中。下面是我的操作事件: 提前道谢。