cmd命令列執行java程式的編譯和執行的方法及可能出現找不到或無法載入主類的錯誤的解決
首先我們經常在用cmd命令列編譯和執行java程式時,我們的java程式呼叫了第三方的jar包,那麼編譯和執行的方法有兩種:
方法1:
編譯:javac -Djava.ext.dirs=E:\Eclipse\org.apache.commons\org.apache.commons\commons-cli-1.1 Test.java
執行:java -Djava.ext.dirsE:\Eclipse\org.apache.commons\org.apache.commons\commons-cli-1.1 Test
是指存放第三方jar檔案的目錄。也可以寫成相對路徑:此處根據自己的去寫Test.java指包含main函式的類。E:\Eclipse\org.apache.commons\org.apache.commons\commons-cli-1.1
方法2:
編譯: javac -cp E:\Eclipse\org.apache.commons\org.apache.commons\commons-cli-1.1\commons-cli-1.1.jar; test.java
執行:java -cp E:\Eclipse\org.apache.commons\org.apache.commons\commons-cli-1.1\commons-cli-1.1.jar; test
有可能會出現:找不到或無法載入主類的錯誤!
通常出現這種問題有以下三種原因:
第一:環境變數配置不正確,配置環境變數時一定要將CLASSPATH配上,(配置教程)
第二:執行方法有誤,進入java檔案目錄下,首先執行javac xxx.java,生成一個xxx.class檔案,然後執行java xxx
第三:程式有問題,比如我之前直接在cmd下執行eclipse下的java檔案,始終報“錯誤: 找不到或無法載入主類”這個異常,但是在eclipse下執行同一個檔案卻沒有問題,後來仔細發現原來是java檔案中的包名導致的,刪除掉紅色框中的內容即可正常執行。這是在編譯通過的情況下執行編譯後的檔案出現的問題,如果編譯都沒通過那就是java檔案的問題,仔細檢查一下檔案是否有異常,比如類沒有被public修飾,或者main方法沒有static修飾等等。
還有個最重要的也可能是最主要的問題,就是你的main函式不要放在包裡 將包去掉 這樣才能解決這個問題 我之前在這個問題上浪費了很多時間 比如:
注意事項:如果是從eclipse中已有檔案執行時:需要刪除 package 包名; 否則執行HelloWorld.class檔案時會出現找不到或無法載入主類HelloWorld!
例如 package hah;
public class HelloWorld
{public void main(String[] args) {
System.out.println("Hello,world!");
}
}
需要將第一行的package hah;去掉 變成預設包這樣就可能解決上面的問題