Vague JavaFX NullPointerException错误消息
好的,我正在为学校编写这个简单的JavaFX应用程序,我们在这里找到从给定点走出迷宫的最短路径。然而,为了好玩,我决定更进一步,玩得开心一些。我试图制作一个吃东西走出迷宫的吃豆人,而不是简单地给解决方案中的矩形上色。奇怪的是,有时它工作得很好,有时它只是停止并在终端中发送此错误消息:Vague JavaFX NullPointerException错误消息,java,multithreading,javafx,nullpointerexception,Java,Multithreading,Javafx,Nullpointerexception,好的,我正在为学校编写这个简单的JavaFX应用程序,我们在这里找到从给定点走出迷宫的最短路径。然而,为了好玩,我决定更进一步,玩得开心一些。我试图制作一个吃东西走出迷宫的吃豆人,而不是简单地给解决方案中的矩形上色。奇怪的是,有时它工作得很好,有时它只是停止并在终端中发送此错误消息: Exception in thread "JavaFX Application Thread" java.lang.NullPointerException at javafx.scene.Scene$Sc
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
at javafx.scene.Scene$ScenePulseListener.synchronizeSceneNodes(Scene.java:2289)
at javafx.scene.Scene$ScenePulseListener.pulse(Scene.java:2419)
at com.sun.javafx.tk.Toolkit.lambda$runPulse$30(Toolkit.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.tk.Toolkit.runPulse(Toolkit.java:354)
at com.sun.javafx.tk.Toolkit.firePulse(Toolkit.java:381)
at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:510)
at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:490)
at com.sun.javafx.tk.quantum.QuantumToolkit.lambda$runToolkit$404(QuantumToolkit.java:319)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
正如您所看到的,没有实际的指针指向我的代码错误应该在哪里,所以我有点困惑,更不用说错误应该是什么了
我在其中一个类中使用了一个线程来设置pacman的动画,但是实际更改图像的代码在平台中。runLater()
,因此它应该不会引起任何问题。除此之外,我很迷路,所以请给我一些问题可能在哪里的指针,或者帮助我解释这个错误消息
这是我用于动画的线程。只发布run方法和实例变量,但是有一个用于walking
布尔值的简单setter和一个用于设置Image
数组、帧的构造函数
实例变量:
boolean walking = false;
Image[] frames;
运行方法:
@Override
public void run() {
walking = true;
for(int i = 0; walking; i++) {
try {
Thread.sleep(200);
} catch(InterruptedException e) {
System.out.println(e);
}
final Image img = frames[i % frames.length];
Platform.runLater(new Runnable() {
@Override
public void run() {
setFill(new ImagePattern(img));
}
});
}
}
编辑:添加了线程代码,听起来您的多线程处理有问题。除非你能发布一些代码来重现这个问题,否则很难提供帮助。FWWI可能根本不会用线程来处理这样的事情——我首先会考虑<代码>动画定时器。(虽然“用不同的方式做”是,我承认,并不是问题的答案。)添加了多线程代码,我看不出有什么错(尽管你肯定应该使用动画API来实现这一点-使用线程是过分的,你只需要一个时间线或一个转换)。任何地方都没有其他线程?听起来你的多线程有问题。除非你能发布一些代码来重现这个问题,否则很难提供帮助。FWWI可能根本不会用线程来处理这样的事情——我首先会考虑<代码>动画定时器。(虽然“用不同的方式做”是,我承认,并不是问题的答案。)添加了多线程代码,我看不出有什么错(尽管你肯定应该使用动画API来实现这一点-使用线程是过分的,你只需要一个时间线或一个转换)。任何地方都没有其他线程?