所以,我得到了一个StackOverflowError(从InvocationTargetException中解包),我不能为我的生活找出原因。
package gui;
import errorhandling.ErrorLogBook;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class GUIRouter extends Application{
public static void main(String[] args)
{
try
{
Application.launch(GUIRouter.class, (String[])null);
}
catch (Exception e)
{
System.out.println(e.getCause().toString());
}
}
@Override
public void start (Stage primaryStage)
{
try
{
StackPane page = (StackPane) FXMLLoader.load(GUIRouter.class.getResource("LoginScreen.fxml"));
Scene scene = new Scene(page);
primaryStage.setScene(scene);
primaryStage.show();
}
catch (Exception e)
{
ErrorLogBook.logReport(e);
}
}
它在第一个试块中失败:
Application.launch(GUIRouter.class, (String[])null);
这是我使用NetBeans和JavaFX Scene Builder 2.0构建的FXML应用程序
关于为什么我的代码会崩溃的任何想法?
答案 0 :(得分:1)
我的猜测是"LoginScreen.fxml"
中的.fxml将GuiRouter定义为其控制器,然后通过反射创建。我的猜测是,在创建过程中,它最终会调用start(..)
来创建一个循环。
答案 1 :(得分:0)
如果没有.fxml文件和/或堆栈跟踪,我(不管怎样,除了)以与Kiskae完全相同的方式猜测异常的主要原因。 但是,为什么不替换行
Application.launch(GUIRouter.class, (String[])null);
使用更简单的表格
Application.launch(args);
或者至少
Application.launch(args, new String[0]);
查看异常是否仍然存在。
答案 2 :(得分:0)
试试这个:
package gui;
import errorhandling.ErrorLogBook;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class GUIRouter extends Application{
public static void main(String[] args)
{
launch(args);
}
@Override
public void start (Stage primaryStage)
{
try
{
StackPane page = FXMLLoader.load(getClass().getResource("/gui/LoginScreen.fxml"));
Scene scene = new Scene(page);
primaryStage.setScene(scene);
primaryStage.show();
}
catch (Exception e)
{
e.printStackTrace();
ErrorLogBook.logReport(e);
}
}
答案 3 :(得分:-1)
感谢所有回复! 然而,在玩完它之后,我找到了问题的根源。 我换了
StackPane page = (StackPane) FXMLLoader.load(GUIRouter.class.getResource("LoginScreen.fxml"));
与
Parent root = FXMLLoader.load(getClass().getResource("LoginScreen.fxml"));
现在它的工作正常。