我尝试了我在堆栈堆栈溢出上找到的任何其他东西,我真的不明白为什么这个不能工作。我不会向您展示我的应用程序中不起作用的代码,因为即使是在示例项目中,它也不起作用。所以问题来了:
当我用示例代码创建新的JavaFX应用程序时,当我将其作为桌面应用程序运行时,当我构建此应用程序并在浏览器中启动时,它会工作。这可以完美地作为桌面和浏览器应用程序使用
但当我创建新的css应用程序,这几乎是相同的,但阶段是由JavaFX和css定义的,而不是字节他代码。这是一个完美的windows应用程序,但不能作为浏览器应用程序
java.lang.NullPointerException: Location is required.
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.load(Unknown Source)
at javafxapplication3.JavaFXApplication3.start(JavaFXApplication3.java:22)
at com.sun.javafx.applet.FXApplet2$2.run(Unknown Source)
at com.sun.javafx.application.PlatformImpl.lambda$null$170(Unknown Source)
at com.sun.javafx.application.PlatformImpl$$Lambda$46/15592694.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$171(Unknown Source)
at com.sun.javafx.application.PlatformImpl$$Lambda$45/19532686.run(Unknown Source)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$145(Unknown Source)
at com.sun.glass.ui.win.WinApplication$$Lambda$35/9825943.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.NullPointerException: Location is required.
at com.sun.javafx.applet.FXApplet2$2.run(Unknown Source)
at com.sun.javafx.application.PlatformImpl.lambda$null$170(Unknown Source)
at com.sun.javafx.application.PlatformImpl$$Lambda$46/15592694.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$171(Unknown Source)
at com.sun.javafx.application.PlatformImpl$$Lambda$45/19532686.run(Unknown Source)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$145(Unknown Source)
at com.sun.glass.ui.win.WinApplication$$Lambda$35/9825943.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException: Location is required.
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.load(Unknown Source)
at javafxapplication3.JavaFXApplication3.start(JavaFXApplication3.java:22)
... 11 more以下是工作应用程序的代码:
public class JavaFXApplication4 extends Application {
@Override
public void start(Stage primaryStage) {
Button btn = new Button();
btn.setText("Say 'Hello World'");
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println("Hello World!");
}
});
StackPane root = new StackPane();
root.getChildren().add(btn);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}此应用程序不能在浏览器中运行,并抛出异常:
public class JavaFXApplication3 extends Application {
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
}有人能帮我吗?
发布于 2015-07-08 05:28:48
问题出在下面这一行:
Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));很明显,load方法实际上是使用null参数调用的。这是因为sample(“/getResource/sample.fxml”)不能归档该资源。
运行时类路径上缺少资源(或具有错误的路径)。
发布于 2017-10-20 15:16:05
问题与签名有关,但我不太明白这是什么意思。然后,我搜索了如何使用netbeans在浏览器中运行JavaFX应用程序,找到了以下内容:http://docs.oracle.com/javafx/2/fxml_get_started/fxml_deployment.htm
在NetBeans8.2中,在Build > Deployment下的项目属性中有一个复选框:
请求无限制访问(启用签名)
有了这个,它就可以工作了。祝好运。
发布于 2019-02-07 01:19:01
在某些情况下,如果你使用maven,你应该把你所有的fxml文件移到resources目录,并在那里使用一个相对地址。
如果你想在控制器类中使用stage.setScene()函数,最好使用:
Parent root = FXMLLoader.load(getClass().getClassLoader().getResource("FXMLDocument.fxml"));
Scene scene = new Scene(root);https://stackoverflow.com/questions/31279442
复制相似问题