2012-02-04 56 views
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

回答

4

工作這是在Netbeans的一個bug:

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

已解決,所以請嘗試升級到最新版本的Netbeans。

+0

它在您的鏈接上說已在7.0.1中解決,這是我正在使用的版本。 - Nvm,一位朋友剛剛嘗試過7.1,它的工作原理。如果我嘗試7.1,讓我驗證它的工作原理。 – Neyoex 2012-02-04 12:48:03

+0

當然可以在7.1中工作,謝謝。 – Neyoex 2012-02-04 13:10:46