Java 动画线程handledraw()中出现空指针异常

Java 动画线程handledraw()中出现空指针异常,java,nullpointerexception,processing,Java,Nullpointerexception,Processing,我对java(以及面向对象编程)非常陌生。作为第一个java项目,我被指示启动并运行一个标记云引擎小程序。所以我找到了WordCram和一小段使用PApplets的代码示例,我想我会过得很轻松 但是,虽然我的代码本身不会生成任何错误,但在运行时会抛出以下错误: Exception in thread "Animation Thread" java.lang.NullPointerException at processing.core.PApplet.handleDraw(PApplet

我对java(以及面向对象编程)非常陌生。作为第一个java项目,我被指示启动并运行一个标记云引擎小程序。所以我找到了WordCram和一小段使用PApplets的代码示例,我想我会过得很轻松

但是,虽然我的代码本身不会生成任何错误,但在运行时会抛出以下错误:

Exception in thread "Animation Thread" java.lang.NullPointerException
    at processing.core.PApplet.handleDraw(PApplet.java:2336)
    at processing.core.PGraphicsJava2D.requestDraw(PGraphicsJava2D.java:243)
    at processing.core.PApplet.run(PApplet.java:2176)
    at java.lang.Thread.run(Thread.java:722)
我有一大堆代码,我很犹豫是否要把它们全部发布在这里。。。但是在我试图弄清代码的底细的过程中,我总是对查询者提供的代码太少感到沮丧:所以我会暂时将它粘贴在这里,我会留意有人告诉我重新格式化或编辑部分或大部分代码

两类中的第一类:

package tagengine;

import java.awt.*;

public class TagFrame extends Frame {

    public TagFrame() 
    {
        super("Embedded PApplet");
        Engine embed = new Engine();
        setLayout(new BorderLayout());
        add(embed, BorderLayout.CENTER);
        embed.init();   
    }

    public static void main(String[] args)
    {
        TagFrame tagFrame = new TagFrame();
    }
}
第二点:

package tagengine;

import processing.core.PApplet;
import processing.core.PFont;
import processing.core.PVector;
import wordcram.*;

public class Engine extends PApplet {

    @Override public void setup() {
        this.size(900, 500);
        this.colorMode(HSB);
        this.noLoop();
        this.setVisible(true);
    }

    @Override public void draw() {
        this.background(68);
        new WordCram(this)
                .fromWebPage("http://en.wikipedia.org/wiki/Barcamp")
                .withColors(color(0, 0, 0),
                color(0, 0, 255),
                color(30, 255, 255)) // mustard, red)
                .withFonts(PFont.list())
                .withAngler(moreRandomByWeight())
                .withPlacer(crazyPlacer())
                .sizedByWeight(8, 100)
                .maxNumberOfWordsToDraw(300)
                .drawAll();
    }

    WordAngler moreRandomByWeight() {
        return new WordAngler() {
            @Override public float angleFor(Word w) {
                float range = (1 - w.weight) * PI;
                return random(-range, range);
            }
        };
    }

    WordPlacer crazyPlacer() {
        return new WordPlacer() {
            @Override public PVector place(Word w, int rank, int words,
                    int ww, int wh, int fw, int fh) {
                float x = (fw - ww) * (1 - w.weight);
                float y = random(fh - wh);
                return new PVector(x, y);
            }
        };
    }

    @Override public void mousePressed() {
        redraw();
    }
}

在调用
init()
之前,您正在将
引擎添加到
BorderLayout
,并且在
引擎
准备好绘制之前,似乎正在尝试执行立即绘制操作。

在堆栈溢出上,您不需要像
这样的HTML标记!这是整个堆栈跟踪,还是还有其他部分?堆栈跟踪实际上是一条“错误”消息,它告诉您问题发生在哪一行,但无法从代码中判断哪一行与之匹配(我认为处理可能正在进行一些……预处理)。我认为堆栈跟踪还有更多。。。如果你能发布完整的堆栈跟踪,那就太好了