所以,我正在尝试使用LWJGL3,它要求使用-XstartOnFirstThread来初始化GLFW窗口。我也试图创建一个需要Java Swing或JavaFX的启动器。但是,我发现如果启用了JVM参数,那么Swing和JavaFX都不会显示该窗口,而Printing仍然可以使用主方法。例:
public static void main(String[] args) {
System.out.println("hi");
frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
frame.setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS));
frame.setLocationRelativeTo(null);
frame.setTitle("Angulus");
frame.setResizable(false);
frame.pack();
frame.setVisible(true);
System.out.println("hi again.");
}正确地输出:“hi”和“hi again”然而,帧永远不会打开,并且当参数被移除时,帧会起作用。我也试图把这个框架放在一个新的线程中:
public static void main(String[] args) throws Exception {
System.out.println("hi");
new Thread(() -> {
System.out.println("hi again.");
frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
frame.setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS));
frame.setLocationRelativeTo(null);
frame.setTitle("Angulus");
frame.setResizable(false);
frame.pack();
frame.setVisible(true);
}).start();
}同样的问题再次出现,这个窗口只有在没有时才会打开
-XstartOnFirstThread参数。这同样适用于JavaFX,start方法甚至不会被调用。