2009-06-15 162 views
3

我使用eclipse嘗試了java.io.Console API。我的示例代碼如下。Java控制檯API

package app; 

import java.io.Console; 

public class MainClass { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     Console console = System.console(); 
     console.printf("Hello, world!!"); 
    } 

} 

當我嘗試運行該示例時,出現以下錯誤。

異常線程 「main」 顯示java.lang.NullPointerException在 app.MainClass.main(MainClass.java:11)​​

我有什麼錯?謝謝。

回答

6

由於您在評論中提到您正在使用Eclipse,因此根據此bug report,似乎目前在Eclipse中不支持Console

System.console方法返回與當前Java虛擬機關聯的控制檯,如果沒有控制檯,則返回null。從System.console方法的文檔:

返回如果任何與當前Java 虛擬機相關的唯一Console對象。

返回:

系統控制檯,如果有的話,否則null

不幸的是,這是正確的行爲。你的代碼沒有錯誤。唯一的改進是對Console對象執行null檢查以查看是否返回了某個對象;這將通過嘗試使用不存在的Console對象來防止NullPointerException

例如:

Console c = System.console(); 

if (c == null) { 
    System.out.println("No console available"); 
} else { 
    // Use the returned Console. 
} 
0

System.console如果您不在控制檯中運行應用程序,則返回null。有關建議,請參閱this question

+0

如何解決這一問題?我是否必須在命令行中運行應用程序,而不是在eclipse中使用RUN按鈕? – Bharani 2009-06-15 14:49:07

+0

我用一個類似問題的鏈接更新了答案 - 您可以使用外部控制檯,批處理文件和/或遠程調試來解決此問題。在Eclipse bug DB中也有一個鏈接。 – McDowell 2009-06-15 14:52:37

0

System.console返回與當前Java 虛擬機關聯的唯一Console對象 ,如果有的話。

你必須在使用它之前測試console是否爲null。