2010-01-27 89 views
1

Hay Guy,我使用org.apache.commons.net.nntp連接到nntp服務器,但是運行一個簡單的nntp.connect(主機,端口)崩潰android。org.apache.commons.net.nntp崩潰android

任何人有任何想法? Java包是否可以直接與android一起使用?還是他們需要編輯?

感謝

import org.apache.commons.net.nntp.*; 

public class newsdroid extends Activity { 
    NNTP usenet; /** Called when the activity is first created. */ 

    @Override public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     try { 
      usenet.connect("ssl-eu.astraweb.com", 563); 
     } catch (SocketException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
} 
+1

您是否嘗試過使用'LogCat'來調試您的程序? LogCat將對發生崩潰的位置進行非常詳細的描述。如果您使用的是LogCat,那麼堆棧跟蹤是什麼? – 2010-01-27 15:25:43

+0

它說:「java.lang.NullPointerException在com.example.use.use.onCreate(use.java:19) – dotty 2010-01-27 15:41:17

+0

你可以發佈你的'onCreate'方法嗎?在我看來,你沒有初始化當你打電話'nntp.connect(主機,端口);' – 2010-02-01 02:12:56

回答

2

您需要初始化變量usenet,只需使用NTTP usenet其稱爲即可聲明該變量。它只是聲明變量來鍵入NTTP,它沒有任何引用,通常定義爲null,因此NullPointerException

你可能需要檢查NTTPClient代替,所以添加到您的代碼

NTTPClient usenet = new NTTPClient(); 

也就是說初始化變量usenetNTTPClient這一點。

2

你沒有初始化的 '新聞組' 字段,所以你得到一個NullPointerException。

「NNTP usenet」相當於「NNTP usenet = null;」。

+0

我該如何初始化它?我認爲把usenet.connect(「ssl-eu.astraweb.com」,563);會這樣做嗎? – dotty 2010-02-05 10:09:52

+0

它將會是這樣的: NTTP usenet = new NTTP(); 該類的文檔(可以在網上閱讀)表明您可能需要NNTPClient,但原理相同。 您可能需要閱讀關於Java的介紹性書籍,特別是關於變量和實例之間差異的位。 – 2010-02-06 03:44:38