Я имею дело с мидлетом в 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