InterruptedException вызывает NullPointerException в printStacktrace j2me - PullRequest
3 голосов
/ 04 февраля 2012

Я имею дело с мидлетом в j2me, и у меня есть этот класс потока (скажем, называется chan), который выполняет только следующее:

public class Chan extends Thread {

    public void run(){
        try {
            Thread.sleep(5000);
        } catch (InterruptedException ex) {
          System.err.println("Chan thread woke up " + ex.toString());
                    ex.printStackTrace();
           System.err.println("Stacktrace end");
        }
    }
}

И я пытаюсь использовать chan.interrupt (); из основного кода мидлета, который выполняет только следующее:

public void startApp() {

    Chan ch = new Chan();
    ch.start();

    try {
        Thread.sleep(1000);
    } catch (InterruptedException ex) {
        System.err.println("error interrupting: "+ ex.toString());
        ex.printStackTrace();
    }
    ch.interrupt();
}

То, что я получаю, это:

Chan thread woke up java.lang.InterruptedException  
java.lang.InterruptedException  
java.lang.NullPointerException
    at org.netbeans.mobility.antext.StackTraceTranslator.getLineNumber(StackTraceTranslator.java:219)
    at org.netbeans.mobility.antext.StackTraceTranslator.translate(StackTraceTranslator.java:121)
    at org.netbeans.mobility.antext.RunTask$StackTraceTranslatorHandler$1.flush(RunTask.java:780)
    at org.netbeans.mobility.antext.RunTask$StackTraceTranslatorHandler$1.run(RunTask.java:826)
    at java.lang.Thread.run(Thread.java:722)`

указанная строка находится в методе выполнения Thread:

public void run() {
    if (target != null) {
        target.run(); <-- 722nd line 
    }
}

В программе все работает нормально, кроме странной трассировки стека. Если я просто удаляю нить printStacktrace в чане, такое исключение nullpointerException не выводится.

Так что я не понимаю, что пытается сказать мне это nullpointerexception, и почему трассировка стека для прерывания прерывания составляет 1 строку, а остальная часть трассы отсутствует.

Эмулятор - Oracle Java (TM) Platform Micro Edition SDK 3.0.5, и я работаю над Netbeans

1 Ответ

4 голосов
/ 04 февраля 2012

Это ошибка в Netbeans:

http://netbeans.org/bugzilla/show_bug.cgi?id=170792

Исправлено, поэтому попробуйте обновить до последней версии Netbeans.

...