Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vague JavaFX NullPointerException错误消息_Java_Multithreading_Javafx_Nullpointerexception - Fatal编程技术网

Vague JavaFX NullPointerException错误消息

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

好的,我正在为学校编写这个简单的JavaFX应用程序,我们在这里找到从给定点走出迷宫的最短路径。然而,为了好玩,我决定更进一步,玩得开心一些。我试图制作一个吃东西走出迷宫的吃豆人,而不是简单地给解决方案中的矩形上色。奇怪的是,有时它工作得很好,有时它只是停止并在终端中发送此错误消息:

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来实现这一点-使用线程是过分的,你只需要一个时间线或一个转换)。任何地方都没有其他线程?