![執行java程式提示找不到或無法載入主類](https://img.php.cn/upload/article/000/000/041/5dcf95a240485911.jpg)
原因:
1.java指令預設在尋找class檔案的位址是透過CLASSPATH環境變數中指定的目錄中尋找的。
2.我們忽略了package的影響。
解決過程:
第一個問題好解決:
我們直接在CLASSPATH環境變數中加入「.;」即可。 「.」的意思是搜尋目前目錄。
第二個問題看下面分析:
看下面兩個類別
![1573885474283971.png 執行java程式提示找不到或無法載入主類](https://img.php.cn/upload/image/906/847/107/1573885474283971.png)
#類別A和類別B的唯一差異就是沒有定義包名。
我們的工程路徑是D:\HelloWorld,在HelloWorld資料夾中建立src資料夾,類別B的原始碼檔案就放在src中。用javac編譯完以後
會在src資料夾中產生NewsManager.class,如下:
![1573885523796845.png 執行java程式提示找不到或無法載入主類](https://img.php.cn/upload/image/824/523/867/1573885523796845.png)
執行如下:
![1573885548153121.png 執行java程式提示找不到或無法載入主類](https://img.php.cn/upload/image/592/804/761/1573885548153121.png)
##把原始碼換成類別A:
![1573885574706103.png 執行java程式提示找不到或無法載入主類](https://img.php.cn/upload/image/333/258/295/1573885574706103.png)
為什麼加入了package後就不對了呢?
類別A中package的路徑是org.will.app.main。依照java規定,我們應該按照package定義的路徑來存放來源文件,類別A應該放入:
src\org\will\app\main下,如下:
![1573885602948230.png 執行java程式提示找不到或無法載入主類](https://img.php.cn/upload/image/360/217/181/1573885602948230.png)
#然後我們編譯執行:
![1573885626782342.png 執行java程式提示找不到或無法載入主類](https://img.php.cn/upload/image/895/330/850/1573885626782342.png)
仍然有問題,為什麼,其實大家再回去看看java的書就會發現,一個類別的全名應該是包名類別名。類別A的全名:org.will.app.main.NewsManager
好的,再試試:
![1573885647806337.png 執行java程式提示找不到或無法載入主類](https://img.php.cn/upload/image/325/715/893/1573885647806337.png)
還是不對。為什麼?
仔細看上面的圖,我們在main目錄下讓java指令去執行org.will.app.main.NewsManager,其實它會以為類別的路徑是:
#D:\ HelloWorld\src\org\will\app\main\org\will\app\main\NewsManager,大家看到了吧,路徑重複了。
所以,我們應該這樣執行:
![1573885669904303.png 執行java程式提示找不到或無法載入主類](https://img.php.cn/upload/image/710/842/213/1573885669904303.png)
成功!
推薦教學:
Java教學
以上是執行java程式提示找不到或無法載入主類的詳細內容。更多資訊請關注PHP中文網其他相關文章!