3
我處理在J2ME中一個MIDlet,我有這個線程類(比如叫飾)只做如下:InterruptedException的撫養中的NullPointerException J2ME的printStackTrace
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();從主MIDlet代碼只做如下:
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)`
提到的線是線程的run方法中:
public void run() {
if (target != null) {
target.run(); <-- 722nd line
}
}
除了怪異的堆棧跟蹤之外,一切似乎都在程序中正常運行。如果我只是刪除Chan線程中的printStacktrace
,則不會打印此類nullpointerException。
所以我不明白這個nullpointerexception試圖告訴我,也不知道爲什麼stacktrace爲interruptedexception是1行和其餘的蹤跡丟失。
仿真器是Oracle的Java(TM)平臺Micro版SDK 3.0.5和我的NetBeans
它在您的鏈接上說已在7.0.1中解決,這是我正在使用的版本。 - Nvm,一位朋友剛剛嘗試過7.1,它的工作原理。如果我嘗試7.1,讓我驗證它的工作原理。 – Neyoex 2012-02-04 12:48:03
當然可以在7.1中工作,謝謝。 – Neyoex 2012-02-04 13:10:46