当前位置: 首页 > 知识库问答 >
问题:

在Eclipse中运行多类处理项目

曹子平
2023-03-14
Exception in thread "Animation Thread" java.lang.NullPointerException
at processing.core.PApplet.noStroke(PApplet.java:13845)
at Stepper.drawRacer(Stepper.java:15)
at Race.run(Race.java:29)
at TheRace.draw(TheRace.java:60)
at processing.core.PApplet.handleDraw(PApplet.java:2266)
at processing.core.PGraphicsJava2D.requestDraw(PGraphicsJava2D.java:243)
at processing.core.PApplet.run(PApplet.java:2140)
at java.lang.Thread.run(Thread.java:662)
import processing.core.PApplet;

public class Stepper extends Racer {

    PApplet parent = new PApplet();

    Stepper(String name, int loc, int ypos, PApplet p) {
        super(1, name, loc, ypos,p);
    }

    public void move() {
        location += speed;
    }

    public void drawRacer(int size, int finish) {
        parent.noStroke();
        parent.fill(242,109,125);
        parent.rect((location*(1000-size*2))/finish, ypos, size, size);
    }
}

构造函数包含名称参数、沿路位置参数、车道位置参数,以及根据http://processing.org/learning/eclipse/所需的PApplet参数。该错误始于parent.noStroke();,但并不是noStroke()所独有的,因为我试着注释了它,但错误只出现在下一行。我有一种感觉,这个错误与我使用PApplet的方式有关,但我不知道是什么。

编辑:所以我从我认识的人那里得到了输入,显然问题是我没有使用正确的PApplet父级。以下是Stepper扩展的Racer类:

import processing.core.*;

public class Racer{
  int location;
  int speed;
  String name;
  int ypos;
  PApplet parent;// = new PApplet();

  Racer (int initspeed, String nema, int loc, int yposi, PApplet p) {
    location = loc;
    speed = initspeed;
    name = nema;
    ypos = yposi;
    parent = p;
  }

  public PApplet getParent() {
    return parent;
  }
...

该人士认为,在Racer类和Stepper类中都声明一个PApplet父级,而是在Stepper类的构造函数中从Racer类调用PApplet是错误的。然而,令我困惑的是:如果parent只在Racer中声明,Stepper类引用Racer类,而我从不告诉Racer类要绘制哪个PApplet(即扩展PApplet的race类),那么Racer类怎么知道要绘制哪个PApplet呢?

提前道谢。

共有1个答案

贺光华
2023-03-14

问题是您在Stepper中创建了一个新的PApplet(也可能在您拥有的任何其他子类中)。您只能有一个PApplet实例,我假设它是您的TheRace类(它扩展了PApplet并实现了setup和draw)。

因此,您需要通过该实例传递给应该能够访问Papplet方法的类。这就是你在Racer中所做的。但是只需移除子类中的PApplet父变量(这里是Stepper),您就很好了。

关于编辑:您可以从子类(Stepper)中的超类(这里是Racer)访问非私有变量。

 类似资料:
  • 我正面临着一个如此奇怪的问题与我的日食。Android项目没有在我的eclipse中运行,我使用的是eclipse版本4.4 Luna和Android SDK最新的API级别23(甚至更早的版本也没有工作),直到几天前它还运行得很好,所有其他java项目都运行得很好,比如web和桌面等。当我运行android项目时,它会显示错误对话框,尽管项目中没有错误(对于一个新项目也是如此),但我已经尝试了c

  • 问题内容: 从文件而不是从IDLE执行时,将运行多处理Process类的基本示例。为什么会这样,可以做到吗? 问题答案: 是。该功能的以下工作在单独的(第三)过程中运行。 但是,要查看输出,至少在Windows上,必须从这样的控制台启动IDLE。 (在2.x上使用。)原因是IDLE在单独的进程中运行用户代码。当前,IDLE进程和用户代码进程之间的连接是通过套接字进行的。通过多处理完成的派生不会复制

  • 上周,我们的团队决定从Netbean迁移到Eclipse,因为我们开发了一些只能在Eclipse上运行的新插件。 首先,项目开始使用来自pom的my maven插件

  • 我正在学习spring batch,并试图理解在异常期间项目处理器是如何工作的。 我试图通过在我的项目处理器中为一条记录手动抛出异常来模拟异常 现在根据跳过限制,当异常被抛出时,项目处理器将重新处理块并跳过抛出错误的项目,项目写入也将所有记录插入数据库,除了一条异常记录。 这一切都很好,因为我的处理器,它只是转换为大写字母名称,它可以运行很多次,但影响很大。 其他的选择是什么?

  • 我正在尝试为Java项目学习eclipse。我使用初始化器(https://start.Spring.io/)使用Spring Web的依赖项设置Spring Boot。我试图在eclipse中构建我的项目,并得到以下错误 有什么想法吗?

  • 我正在学习静态编程语言,所以我创建了一个带有main方法的文件,里面有简单的println方法调用,然后按下运行为静态编程语言应用程序,得到了异常错误:无法找到或加载主类learn.varabls.变量Kt-1/>ClassNotFoundExc0019:learn.varabls.变量Kt错误:无法找到或加载主类Kt导致:java.lang.ClassNotFoundExc0019: Kt