#python #nullpointerexception #processing
Вопрос:
Краткое заявление об отказе от ответственности: Я немного новичок, так что эта проблема может быть просто в том, что я не вижу очевидного, но в основном, когда я бегу
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)
Интересно, что я возвращаю ошибку только тогда , когда также определена какая-либо из встроенных функций обработки (например setup()
, draw()
или mouseClicked
), поэтому, если я запустил:
def why_arent_you_working():
print("please")
def test():
strokeWeight(5)
circle(100, 100, 100)
test()
why_arent_you_working()
по какой-то причине это сработало бы.
Я перепробовал 10 различных тем, касающихся NullPointerException
, но я просто не могу понять, что я сделал не так. Как я уже писал в начале этого поста, я новичок, так что, вероятно, это какая-то моя глупая оплошность, но было бы здорово, если бы кто-нибудь мне помог.
Ответ №1:
Это может быть результатом «смешивания активного и статического режимов». Активный режим-это когда вы используете setup()
и/или draw()
, а статический режим-когда вы этого не делаете. В принципе, если вы используете setup()
, вы не можете вызывать какие-либо функции за пределами отступа (или определения переменной). Стандартный способ нарисовать круг на экране выглядит следующим образом:
def setup():
size(400,400)
def draw():
strokeWeight(5)
circle(100, 100, 100)
draw()
вызывается точно так же, как setup()
есть: он вызывается автоматически, без вашего явного вызова его где-либо.
Имейте в виду, что draw()
это цикл, поэтому он будет выполняться непрерывно до noLoop()
тех пор, пока не будет вызван.
Ответ №2:
Когда вы объявляете переменную, вы создаете что-то, что указывает на эту переменную. Т. е. когда мы создаем переменную x = 5. x
это просто ссылка, указывающая на число 5
.
NullPointerException
возникает, когда вы указываете на что-то, что есть Null
. Я не слишком хорошо знаком с методом ударного веса, поэтому не могу сказать вам точно, но я могу попытаться помочь больше, если вы добавите для меня немного больше кода.
В файлах журнала (вторая часть, в которой вы закодировали) вы можете щелкнуть номер строки, и это приведет вас к тому, в какой части метода произошла ошибка.
Итак, ниже это говорит нам о том, что сигнал NullPointerException
поступает откуда-то processing.core.PApplet.strokeWeight
из строки 14431. Если бы вы могли нажать на номер и скопировать метод в свой исходный пост, я мог бы попробовать помочь немного больше оттуда.
processing.app.SketchException: java.lang.NullPointerException at processing.core.PApplet.strokeWeight(PApplet.java:14431)
Комментарии:
1. Спасибо за ответ, но я не совсем понимаю, что вы имеете в виду. Я нажал на номер, но он меня никуда не ведет. Вот скриншот: ibb.co/F7vbPzh . Я также не уверен, куда нажать, где-нибудь в консоли? Я работаю над обработкой Python и еще раз спасибо
2. Извините, я предполагал, что ваш редактор поддержал бы это, моя вина! Какова цель этого кода, вы пытаетесь нарисовать круг? А также импортировали ли вы пакет обработки?
3. Нет, все в порядке. Функция circle() является встроенной функцией в процессе обработки, и для рисования круга при вызове ей требуются такие параметры, как высота, ширина и радиус. Я не импортировал ни одного пакета, о котором мне известно.