1. 程式人生 > >Java環境變數設定後,編寫第一個程式報錯:找不到或無法載入主類 D:\java\HelloWorld

Java環境變數設定後,編寫第一個程式報錯:找不到或無法載入主類 D:\java\HelloWorld

Java 環境變數配置完後,按照網上說的辦法測試都成功了,但在寫第一個HelloWorld程式時,編譯通過了,執行時報“找不到或無法載入主類 D:\java\HelloWorld”錯誤。
執行錯誤

網上解決辦法

程式設計時習慣地認為一個執行命令後面一般跟的是一個檔案,所以毫不猶豫地敲入

javac D:\java\HelloWorld.java

發現沒有報錯,相應檔案下生成了HelloWorld.class檔案,說明編譯成功,興奮之餘,接著很自然地敲入

 java D:\java\HelloWorld.class 

接著就報了上面圖片中的錯誤,開始在網上搜,大部分解釋是環境變數配錯了,重新配置環境變數

  • 有的說應該去掉.class 字尾
java D:\java\HelloWorld
  • 有的說直接執行
java HelloWorld
  • 還有的說“CLASSPATH值的最後沒;(分號)會出現以下錯誤:錯誤:找不到或無法載入主類HelloWorld。”

  • 還有一種說法是“java HelloWorld 時,字母大小寫搞錯也出錯”

結果試了各種辦法無解,有種想把電腦摔了的衝動,最後認真看了一下javac和java命令幫助檔案,聯想一下編譯知識才恍然發現自己犯了一個特別低階的錯誤。

原因

Java編譯原理不理解,寫程式不認真

javac是個java語言編譯器,它的用法:
javac用法


它的作用是把java程式編寫的類和介面編譯成位元組程式碼的class檔案,截圖中我們看到它操作的是一個檔案,最後會生成一個class檔案

javac <options> <source files>

而java命令程式則是一個直譯器,它的作用是把編譯後生成的class檔案解釋成機器能夠識別的機器碼,並最終由執行環境中的Runtime對程式碼進行執行,真正實現我們想要機器完成的工作。從截圖的幫助文件中我們看到它要執行的是類,是一個和class檔名字完全相同(大小寫也要一樣)的類
java命令幫助
java 命令的作用就是Java虛擬機器的作用,虛擬機器的功能如下:

  • 通過 ClassLoader 尋找和裝載 class 檔案
  • 解釋位元組碼成為指令並執行,提供 class 檔案的執行環境
  • 進行執行期間垃圾回收
  • 提供與硬體互動的平臺

解決辦法

執行java命令的時候要到class 檔案所在的目錄下,並且class 這個引數應該只填類的名稱(即和class檔名字完全相同)
我的檔案是放在了D:\java目錄下,cmd後切換到D:\java 目錄下,然後再執行編譯和執行命令。
切換目錄執行命令

小結

  • 原理性的知識不可忽視,需要在實踐中不斷理解,達到融會貫通;
  • 做什麼事情都要認真,很多錯誤都是不認真造成的。