awt eventqueue 0 java lang nullpointerexception

Что такое исключения Null Pointer ( java.lang.NullPointerException ) и что их вызывает?

Какие методы / инструменты могут использоваться для определения причины, чтобы исключить исключение из-за преждевременного прекращения работы программы?

12 ответов

Когда вы объявляете ссылочную переменную (т. е. объект), вы действительно создаете указатель на объект. Рассмотрим следующий код, в котором вы объявляете переменную примитивного типа int :

В этом примере переменная x является int , и Java инициализирует ее для 0. Когда вы назначаете его 10 во второй строке, ваше значение 10 записывается в ячейку памяти, на которую указывает x.

Но когда вы пытаетесь объявить ссылочный тип, произойдет что-то другое. Возьмите следующий код:

Первая строка объявляет переменную с именем num , но она не содержит примитивного значения. Вместо этого он содержит указатель (потому что тип Integer является ссылочным типом). Поскольку вы еще не указали, что указать на Java, он устанавливает значение null, что означает «Я ничего не указываю».

Во второй строке ключевое слово new используется для создания экземпляра (или создания ) объекту типа Integer и переменной указателя num присваивается этот объект. Теперь вы можете ссылаться на объект, используя оператор разыменования . (точка).

Exception , о котором вы просили, возникает, когда вы объявляете переменную, но не создавали объект. Если вы попытаетесь разыменовать num . Перед созданием объекта вы получите NullPointerException . В самых тривиальных случаях компилятор поймает проблему и сообщит вам, что «num не может быть инициализирован», но иногда вы пишете код, который непосредственно не создает объект.

Например, вы можете имеют следующий метод:

В этом случае вы не создаете объект obj , скорее предполагая, что он был создан до вызова метода doSomething . К сожалению, этот метод можно вызвать следующим образом:

В этом случае obj имеет значение null. Если метод предназначен для того, чтобы что-то сделать для переданного объекта, целесообразно бросить NullPointerException , потому что это ошибка программиста, и программисту понадобится эта информация для целей отладки.

Альтернативно, там могут быть случаи, когда цель метода заключается не только в том, чтобы работать с переданным в объекте, и поэтому нулевой параметр может быть приемлемым. В этом случае вам нужно будет проверить нулевой параметр и вести себя по-другому. Вы также должны объяснить это в документации. Например, doSomething может быть записано как:

Hello I’m a new programmer at an high school level as a result I do not know much about programming and am getting quite a few errors which have been resolved while others I completely do not understand. I am to make a simple Check Box selection program where the user gets to pick between a variety of choices and depending on their action the image changes. The program itself compiles perfectly but when I run it however it gives me some complications. Here is my program:

Well up to this part it runs smoothly and complies but when I proceed to run the program I get this error.

Might be a silly mistake however I cant seem to figure this out. Please Help and thank you

2 Answers 2

NullPointerException s are among the easier exceptions to diagnose, frequently. Whenever you get an exception in Java and you see the stack trace ( that’s what your second quote-block is called, by the way ), you read from top to bottom. Often, you will see exceptions that start in Java library code or in native implementations methods, for diagnosis you can just skip past those until you see a code file that you wrote.

Then you like at the line indicated and look at each of the objects ( instantiated classes ) on that line — one of them was not created and you tried to use it. You can start by looking up in your code to see if you called the constructor on that object. If you didn’t, then that’s your problem, you need to instantiate that object by calling new Classname( arguments ). Another frequent cause of NullPointerException s is accidentally declaring an object with local scope when there is an instance variable with the same name.

In your case, the exception occurred in your constructor for Workshop on line 75. means the constructor for a class. If you look on that line in your code, you’ll see the line

There are fairly clearly two objects on this line: denimjeansButton and this . this is synonymous with the class instance you are currently in and you’re in the constructor, so it can’t be this . denimjeansButton is your culprit. You never instantiated that object. Either remove the reference to the instance variable denimjeansButton or instantiate it.

Эти программы берут строку для параметра. В настоящее время заполнено:

Я убедился, что URL существует.

Я использую библиотеку VLCj для создания mediaPlayerComponent (который помещается внутри контейнера (JPanel mainPanel)). Компонент mainPanel затем помещается внутри слоев JLayeredPanel. Кроме того, я размещаю прозрачный (непрозрачный) слой (JPanel glassPane). В соответствии со всем, что я прочитал, это должно работать, и Eclipse не показывает никаких ошибок или предупреждений.

Трассировка стека выглядит следующим образом:

Код ниже. Строка 62 отмечена комментарием. JPanels и JLayeredPanel, а также windowDimensions созданы как статические объекты выше основного метода в моем коде.

Всем приветствуется всяческая помощь.

java nullpointerexception jlayeredpane vlcj

2 ответа

1 Решение David Xu [2014-05-30 21:08:00]

Вы не инициализировали mainPanel. Попробуйте добавить mainPanel = new JPanel(); над линией ошибки.

Вам также необходимо вызвать frame.add(mainPanel); после инициализации панели.

2 BitNinja [2014-05-30 21:18:00]

mainPanel не был заинтерирован, даже если он выглядит так. У вас есть этот код:

Это только инициализирует glassPane . Чтобы инициализировать mainPanel вы должны изменить свой код на это:

Оцените статью