현재 Netbeans에서 MIDlet (Visual MIDlet을 사용하고 있습니다)을 사용하고 있으며 NullPointerException이 발생하지만 이유를 알지 못합니다.J2ME (Java) - Null 포인터 예외 표시 클래스에 걸렸습니다.
참고 : 확인 명령 단추를 누른 경우에만 프로그램이 에뮬레이터에서 실행될 때 예외가 throw되지 않습니다. 여기
난 당신이 쉽게 읽을 수 있도록 나는 예외와 관련이없는 모든 코드를 제거했다TRACE: <at java.lang.NullPointerException: 0>, Exception caught in Display class
java.lang.NullPointerException: 0
at javax.microedition.lcdui.Display$ChameleonTunnel.callScreenListener(), bci=46
at com.sun.midp.chameleon.layers.SoftButtonLayer.processCommand(), bci=74
at com.sun.midp.chameleon.layers.SoftButtonLayer.soft1(), bci=37
at com.sun.midp.chameleon.layers.SoftButtonLayer.keyInput(), bci=36
at com.sun.midp.chameleon.CWindow.keyInput(), bci=38
at javax.microedition.lcdui.Display$DisplayEventConsumerImpl.handleKeyEvent(), bci=17
at com.sun.midp.lcdui.DisplayEventListener.process(), bci=277
at com.sun.midp.events.EventQueue.run(), bci=179
at java.lang.Thread.run(Thread.java:619)
를 얻을 오류입니다. 아래 코드는 위의 예외를 throw하는 코드 인 경우 단순화 된 버전입니다.
package stMidlet;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class StoryMidlet extends MIDlet implements CommandListener {
private boolean midletPaused = false;
private Command commandOk1;
private Form form1;
private TextField textField1;
public StoryMidlet() {
commandOk1 = new Command("Ok", Command.OK, 1);
textField1 = new TextField("Enter value: ", null, 120, TextField.ANY);
form1 = new Form(null, new Item[]{textField1});
form1.addCommand(commandOk1);
Display.getDisplay(this).setCurrent(form1);
}
/* There were some methods here pre-inserted by netbeans. */
/* I have not changed these, but I can post them if you need me too */
/* initialize() */
/* startMIDlet() */
/* resumeMidlet() */
/* switchDisplayable */
/* getDisplay() */
/* exitMidlet() */
/* startApp() */
/* pauseApp() */
/* destroyApp() */
public void commandAction(Command c, Displayable d) {
if (c == commandOk1)
{
System.out.println("Test");
}
}
}
나는 더 우선으로 한 시간 이상이 문제를 해결하기 위해 노력하고있다. 나는 가치가 언급 생각할 수 있는 유일한 방법은 다음과 같습니다
- 넷빈즈 생성자에서 누수가 있었다라고 ..... 라인 Display.getDisplay (이)가을 경고했다. 나는 경고를 진정시키는 initialize() 메소드로 옮겼지만 예외는 여전히 발생합니다.
도움을 주시면 대단히 감사하겠습니다.
감사합니다. Tom.
한 시간 동안 만 디버깅 하시겠습니까? 당신은 탱크 안에 더 있습니다. 진지한 메모를 듣고 심호흡을하고 몇 시간 동안 걸어 나갑니다. 그렇게 생각한 사람이 먼저 오지 않으면 분명히 얻을 수 있습니다. – Mike
Display.getDisplay (this)는 'this'가 생성자를 이스케이프 처리하기 때문에 누출된다고합니다. 그러나 귀하의 생성자를 기반으로,이 NullPointerException (모든 것이 이미 초기화되었습니다)을 일으킬 가능성이 희박합니다 –