2011-07-16 49 views
1

我剛剛啓動Java ...。 我只是做了一個簡單的程序使用命令提示符編譯時出現不同結果BlueJ

class first 
{ 
    public static void main() 
    { 
     System.out.println("Hello!"); 
    } 
} 

這將運行BlueJ提供完美的罰款,但是從命令提示符下運行時,在運行時它給出了一個錯誤。

這是錯誤 Exception in thread "main" java.lang.NoSuchMethodError: main

這是因爲我沒有在main參數列表給String args[]

直到現在,我曾經下意識地給它。我知道字符串數組在運行時包含所有參數值,但爲什麼它在BlueJ中運行?

(BlueJ的是學生友好Java編輯器和編譯器)

+0

請從提前加入像*「謝謝噪音避免。 ..「*,並注意Java是一個專有名稱,而不是縮寫或縮寫(這將拼寫爲JAVA)。 –

+0

哦。對於那個很抱歉。 – xavier666

+0

也許你的BlueJ IDE正在使用另一個版本的Java? – Marcelo

回答

3

你的程序有效,以及是否從BlueJ的或命令行編譯將編譯爲同樣的事情。

但是,blueJ會讓你在類中運行任何靜態方法(這樣你可以測試你的函數),因爲命令行java命令將(只)尋找特殊的main方法來運行。這主要方法TAGES所有的命令行參數的字符串數組和你的程序應該是這樣的,即使你不使用這些命令行參數:

class first 
{ 
    public static void main(String[] args) 
    { 
     System.out.println("Hello!"); 
    } 
} 
+0

糾正我,如果我錯了,但他們不在後端以相同的方式工作?我認爲當我點擊編譯按鈕時,它會轉換成DOS命令... – xavier666

+0

不,這是不正確的。技術上BlueJ編譯類(就像使用命令行'java'編譯器時一樣),但是然後BlueJ加載類並使用反射來調用您選擇的任何方法。它將**不**使用命令行'java'命令。 –

+0

您可以將方法重命名爲'xavier',而blueJ仍然可以運行它... –

相關問題