JavaFX警告:Argument' getClass()。getClassLoader()。getResource(" view / RootLayout.fxml")'可能是null

时间:2017-06-05 21:14:35

标签: intellij-idea layout javafx

IntelliJ Idea给了我这个警告:

Argument 'getClass().getClassLoader().getResource( "view/RootLayout.fxml" )' might be null

然而,它始终有效。我只想要明确的警告,最好没有注释或禁用检查。

根据这个帖子:IntelliJ IDEA - getClass().getResource("...") return null

  • 我将资源文件夹设置为资源根目录。
  • 我将* .fxml添加到设置 - >构建,执行,部署 - >编译器 - >资源模式
  • 我甚至添加了 .fxml和!? .fxml以涵盖更多可能性。

这些似乎没有任何区别。

这是我的start()方法:

@Override
public void start( Stage primaryStage ) throws Exception
{
    // Load the FXML file containing all of the UI elements.
    FXMLLoader loader = new FXMLLoader();
    loader.setLocation( getClass().getResource( "view/RootLayout.fxml" ) );
    Parent root = FXMLLoader.load( getClass().getClassLoader().getResource( "view/RootLayout.fxml" ) );

    // Create the stage and set the window title.
    primaryStage.setTitle( "SNMP Link Utilization" );

    // Set the scene using root, with the specified width and height.
    primaryStage.setScene( new Scene( root, 500, 600 ) );

    // Set the icon for a non-Maven build.
    //primaryStage.getIcons().add( new Image( "file:resources/images/nic.png" ) );
    // Set the icon for a Maven build.
    primaryStage.getIcons().add( new Image( "images/nic.png" ) );

    primaryStage.show();
}

我做错了吗?我已经尝试了其他几种创建Parent对象的方法,但我尝试过的所有方法都失败了。

1 个答案:

答案 0 :(得分:1)

如果你以这种方式重构代码,你可以摆脱那个警告:

    FXMLLoader loader = new FXMLLoader(getClass().getResource(
            "view/RootLayout.fxml"));
    Parent root = loader.load();