2015-05-06 99 views
0

当我创建一个带有应用程序类的新Netbeans Projekt(JavaFX FXML应用程序)时,我照常收到模板(一个.fxml,一个控制器类和主应用程序) 。当我试图运行此我得到一个异常:JavaFX Netbeans Standard FXML应用程序错误 - Nullpointer for .fxml文件

Exception in thread "main" java.lang.RuntimeException: Exception in Application start method 
    at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:403) 
    at com.sun.javafx.application.LauncherImpl.access$000(LauncherImpl.java:47) 
    at com.sun.javafx.application.LauncherImpl$1.run(LauncherImpl.java:115) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.NullPointerException: Location is required. 
    at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2825) 
    at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2809) 
    at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2795) 
    at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2782) 
    at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2771) 
    at volltextsuche.Volltextsuche.start(Volltextsuche.java:25) 
    [...] 

这是我的start()方法:

@Override 
public void start(Stage stage) throws Exception { 
    URL url = getClass().getResource("FXMLDocument.fxml"); 
    System.out.println(url == null); 
    Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml")); 
    Scene scene = new Scene(root); 
    stage.setScene(scene); 
    stage.show(); 
} 

,不知何故该URL为null。 25行是Parent root = [...]部分。 .fxml文档具有与Strings tell完全相同的名称,并与主应用程序类位于同一个包中。我没有改变任何东西,只是URL的空检查。我搜索了很长时间,但我无法找到任何有关此错误的信息。

  • JDK 8.0_45
  • Netbeans的8.0.2
  • 赢8.1 x64的

IDE with project

+0

FXML文件是否与您显示的代码的“Application”类位于同一个包中? –

+0

是的。可惜的是URL是即时无效的,我无法打印路径... –

+0

您能否看到FXML是否随类文件一起部署到Netbeans部署其类文件的任何位置? (我不是NetBeans用户,但我知道有时需要强制从源文件夹中部署除class文件以外的资源。) –

回答

0

好吧,我发现了错误,请参阅here。错误是不同的,但解决方案是相同的。我在我的项目设置中找到了dist.jar的引用。作为链接状态中的回答问题,我必须CLEAN and build第一次构建的项目。那个破碎的参考被修正了。我删除了所有已编译的文件,现在编译器会完成所有需要的工作并编译整个项目。

0

这是一种有效的临时解决方案。

首先将资源复制到与src文件夹相同的目录。

所以,如果你的src文件夹路径是C:再次应用

运行应用程序:应用程序/ src目录,然后将所有资源复制到C。