Microsoft Windows系統上常見的錯誤消息。html
'javac' is not recognized as an internal or external command, operable program or batch file
若是你收到這個錯誤,Windows將沒法找到編譯器(javac)。java
這裏有一種方法能夠告訴Windows哪裏能夠找到javac,假設你在C:jdk1.8.0中安裝了JDK,在提示符處輸入如下命令並按Enter鍵:程序員
C:\jdk1.8.0\bin\javac HelloWorldApp.java
若是你選擇此選項,你必須在你的javac
和java
命令以前使用C:\jdk1.8.0\bin
,每次編譯或運行一個程序時,爲了不這種額外的輸入,請參考JDK 8安裝說明中更新PATH變量的部分。web
Class names, 'HelloWorldApp', are only accepted if annotation processing is explicitly requested
若是收到此錯誤,則在編譯程序時忘記包含.java後綴,記住,這個命令是javac HelloWorldApp.java,不是javac HelloWorldApp。shell
javac: Command not found
若是你收到這個錯誤,UNIX將沒法找到編譯器javac
。express
有一種方法能夠告訴UNIX在哪裏找到javac
,假設你在/usr/local/jdk1.8.0
中安裝了JDK,在提示符下輸入如下命令並按回車:編程
/usr/local/jdk1.8.0/javac HelloWorldApp.java
若是你選擇此選項,那麼每次編譯或運行一個程序時,你都必須在你的javac和java命令以前加上
/usr/local/jdk1.8.0/
,爲了不這種額外的輸入,你能夠將這些信息添加到PATH變量中,這樣作的步驟將根據當前運行的shell而有所不一樣。
Class names, 'HelloWorldApp', are only accepted if annotation processing is explicitly requested
若是收到此錯誤,則在編譯程序時忘記包含.java後綴,記住,這個命令是javac HelloWorldApp.java
,不是javac HelloWorldApp
。segmentfault
若是你錯誤地編寫程序的一部分,編譯器可能會發出語法錯誤,消息一般顯示錯誤的類型、檢測錯誤的行號、行上的代碼以及代碼中錯誤的位置,在語句末尾省略分號(;)會致使如下錯誤:windows
testing.java:14: `;' expected. System.out.println("Input has " + count + " chars.") ^ 1 error
有時,編譯器沒法猜想你的意圖,若是錯誤級聯超過幾行,則會打印出混亂的錯誤消息或多個錯誤消息,例如,下面的代碼片斷省略了粗體行中的分號(;
):瀏覽器
while (System.in.read() != -1) count++ System.out.println("Input has " + count + " chars.");
在處理此代碼時,編譯器發出兩個錯誤消息:
testing.java:13: Invalid type expression. count++ ^ testing.java:14: Invalid declaration. System.out.println("Input has " + count + " chars."); ^ 2 errors
編譯器發出兩個錯誤消息,由於在它處理count++
以後,編譯器的狀態代表它位於表達式的中間,若是沒有分號,編譯器就沒法知道語句是否完整。
若是你看到任何編譯錯誤,那麼你的程序沒有成功編譯,編譯器也沒有建立.class
文件,仔細檢查程序,修復你檢測到的任何錯誤,而後再次嘗試。
除了驗證你的程序語法正確以外,編譯器還檢查其餘基本正確性,例如,每次使用未初始化的變量時,編譯器都會警告你:
testing.java:13: Variable count may not have been initialized. count++ ^ testing.java:14: Variable count may not have been initialized. System.out.println("Input has " + count + " chars."); ^ 2 errors
一樣,你的程序沒有成功編譯,編譯器也沒有建立.class
文件,修復錯誤並再次嘗試。
Microsoft Windows系統上的錯誤消息。
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorldApp
若是你收到此錯誤,java將沒法找到你的字節碼文件HelloWorldApp.class
。
java試圖找到.class
文件的地方之一是當前目錄,所以,若是你的.class
文件在C:\java
中,你應該將當前目錄更改成C:\java
,若要更改目錄,請在提示符處輸入如下命令,而後按回車鍵:
cd c:\java
他的提示應該更改成C:\java>
,若是在提示符處輸入dir
,應該會看到.java
和.class
文件,如今再次輸入java HelloWorldApp
。
若是仍然有問題,你可能須要更改CLASSPATH
變量,要查看是否須要這樣作,請嘗試使用如下命令對類路徑進行截斷。
set CLASSPATH=
如今再次輸入java HelloWorldApp,若是該程序如今能夠工做,那麼你必須更改CLASSPATH
變量,要設置此變量,請參閱JDK 8安裝說明中更新路徑變量一節,CLASSPATH
變量的設置方式相同。
Could not find or load main class HelloWorldApp.class
初學者程序員常犯的一個錯誤是嘗試在編譯器建立的.class
文件上運行java啓動程序,例如,若是你試圖使用HelloWorldApp.class
而不是java HelloWorldApp
運行程序,你將會獲得這個錯誤。記住,參數是要使用的類的名稱,而不是文件名。
Exception in thread "main" java.lang.NoSuchMethodError: main
Java VM要求使用它的類有一個main
方法來開始執行應用程序,詳解「Hello World!」應用中詳細討論了main方法。
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorldApp
若是你收到此錯誤,java將沒法找到你的字節碼文件HelloWorldApp.class
。
java試圖找到你的字節碼文件的地方之一是當前目錄,例如,若是你的字節碼文件位於/home/jdoe/java
中,你應該將當前目錄更改成該目錄,若要更改目錄,請在提示符處輸入如下命令並按回車:
cd /home/jdoe/java
若是在提示符處輸入pwd
,應該會看到/home/jdoe/java
,若是在提示符處輸入ls
,應該會看到.java
和.class
文件,如今再次輸入java HelloWorldApp
。
若是你仍然有問題,你可能須要更改CLASSPATH
環境變量,要查看是否須要這樣作,請嘗試使用如下命令對類路徑進行截斷。
unset CLASSPATH
如今再次輸入java HelloWorldApp
,若是該程序如今能夠工做,那麼你將必須以與上面的PATH
變量相同的方式更改CLASSPATH
變量。
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorldApp/class
初學者程序員常犯的一個錯誤是嘗試在編譯器建立的.class
文件上運行java啓動程序,例如,若是你試圖使用HelloWorldApp.class
而不是java HelloWorldApp
運行程序,你將會獲得這個錯誤。記住,參數是要使用的類的名稱,而不是文件名。
Exception in thread "main" java.lang.NoSuchMethodError: main
Java VM要求使用它的類有一個主要的方法來開始執行應用程序,詳解「Hello World!」應用中詳細討論了main方法。
若是你正在經過瀏覽器運行一個應用程序,並獲得安全警告說該應用程序被阻塞,請檢查如下條目:
manifest.mf
,從NetBeans IDE的Files選項卡中打開清單文件。