为什么我在 Processing.py 中收到 strokeWeight() 的 NullPointerException 异常?

问题描述

快速免责声明:我是一个新手,所以这个问题可能只是我没有看到明显的问题,但基本上是在我运行时

def setup():
    size(400,400)

def test():
    strokeWeight(5)
    circle(100,100,100)

test()

在处理中我收到以下错误

processing.app.SketchException: java.lang.NullPointerException
at processing.core.papplet.strokeWeight(papplet.java:14431)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.python.core.PyReflectedFunction.__call__(PyReflectedFunction.java:188)
    at org.python.core.PyReflectedFunction.__call__(PyReflectedFunction.java:206)
    at org.python.core.PyObject.__call__(PyObject.java:497)
    at org.python.core.PyObject.__call__(PyObject.java:501)
    at org.python.core.PyMethod.__call__(PyMethod.java:141)
    at org.python.pycode._pyx58.test$2(sketch_210426a.pyde:6)
    at org.python.pycode._pyx58.call_function(sketch_210426a.pyde)
    at org.python.core.PyTableCode.call(PyTableCode.java:171)
    at org.python.core.PyBaseCode.call(PyBaseCode.java:139)
    at org.python.core.PyFunction.__call__(PyFunction.java:413)
    at org.python.pycode._pyx58.f$0(sketch_210426a.pyde:1)
    at org.python.pycode._pyx58.call_function(sketch_210426a.pyde)
    at org.python.core.PyTableCode.call(PyTableCode.java:171)
    at org.python.core.PyCode.call(PyCode.java:18)
    at org.python.core.Py.runcode(Py.java:1614)
    at org.python.core.Py.exec(Py.java:1658)
    at org.python.pycode._pyx57.f$0(/var/folders/vf/3zy00t252_372n6n1n060tc00000gn/T/sketch_210426a6112183873956099370/sketch_210426a.pyde:96)
    at org.python.pycode._pyx57.call_function(/var/folders/vf/3zy00t252_372n6n1n060tc00000gn/T/sketch_210426a6112183873956099370/sketch_210426a.pyde)
    at org.python.core.PyTableCode.call(PyTableCode.java:171)
    at org.python.core.PyCode.call(PyCode.java:18)
    at org.python.core.Py.runcode(Py.java:1614)
    at org.python.core.Py.exec(Py.java:1658)
    at org.python.util.pythoninterpreter.exec(pythoninterpreter.java:276)
    at jycessing.pappletJythonDriver.processSketch(UnkNown Source)
    at jycessing.pappletJythonDriver.findSketchMethods(UnkNown Source)
    at jycessing.Runner.runSketchBlocking(UnkNown Source)
    at jycessing.mode.run.SketchRunner.lambda$startSketch$3(UnkNown Source)
    at java.lang.Thread.run(Thread.java:748)

    at jycessing.mode.run.SketchRunner.convertPythonSketchError(UnkNown Source)
    at jycessing.mode.run.SketchRunner.lambda$startSketch$3(UnkNown Source)
    at java.lang.Thread.run(Thread.java:748)

有趣的是,只有在定义了 Processing 的任何一个内置函数(例如 setup()draw()mouseClicked)时,我才会返回错误,所以如果我运行:

def why_arent_you_working():
    print("please")
    
def test():
    strokeWeight(5)
    circle(100,100)
    
test()
why_arent_you_working()

出于某种原因它会起作用。

我已经尝试了 10 个关于 NullPointerException 的不同主题,但我似乎无法找到我做错了什么。正如我在这文章的开头一样,我是一个新手,所以这可能是我的一些愚蠢的疏忽,但如果有人帮助我就太好了。

解决方法

这可能是“混合活动模式和静态模式”的结果。主动模式是当您使用 SELECT u.username,Sum(t1.amount) AS t1Sum,Sum(t2.amount) AS t2Sum,Sum(t3.amount) AS t3Sum FROM users u JOIN transactions t1 ON t1.user_id = u.id AND t1.type = 0 AND t1.id <= 16 JOIN transactions t2 ON t2.user_id = u.id AND t2.type = 1 AND t2.id <= 16 JOIN transactions t3 ON t3.user_id = u.id AND t3.type = 4 AND t3.id <= 16 WHERE u.id = 4 和/或 setup() 时,而静态模式是您不使用时。基本上,如果您使用 draw(),则不能调用缩进(或变量定义)之外的任何函数。在屏幕上画圆的标准方法是这样的:

setup()

def setup(): size(400,400) def draw(): strokeWeight(5) circle(100,100,100) 的调用方式与 draw() 一样:它会自动调用,无需您在任何地方显式调用它。

请记住,setup() 是一个循环,因此它会持续运行,直到调用 draw()

,

当你声明一个变量时,你所做的就是创建指向该变量的东西。即当我们创建一个变量 x = 5 时。x 只是一个指向数字 5 的引用。

NullPointerException 当您指向 Null 时出现。我对 strokeWeight 方法不太熟悉,所以我不能确切地告诉你,但如果你为我添加更多的代码,我可以尝试提供更多帮助。

在日志文件(您编码的第二部分)中,您可以单击行号,它将带您查看错误来自方法的哪一部分。

所以下面它告诉我们 NullPointerException 来自第 14431 行中名为 processing.core.PApplet.strokeWeight 的某个地方。如果您可以单击该数字并将该方法复制到您的原始帖子中,我可以尝试提供更多帮助从那里开始。

processing.app.SketchException: java.lang.NullPointerException at processing.core.PApplet.strokeWeight(PApplet.java:14431)