1. 程式人生 > 其它 >cmd錯誤: 找不到或無法載入主類

cmd錯誤: 找不到或無法載入主類

技術標籤:JAVAjava

背景:程式可以在eclipse中正常執行,但在cmd下無法執行

錯誤: 找不到或無法載入主類

解決方法1

直接註釋掉(或刪除)package語句:

//package training;
import java.util.ArrayList;

public class ch6_1 {
	public static void main(String[] args) {
		ArrayList<String> list = new ArrayList<String>();
		list.add("我");
		list.add("一定");
		list.add("不會輸");
		list.add("!!!");
		for(String str : list) {
			System.out.print(str);
		}
		System.out.println("\n元素個數:" + list.size());
		System.out.println("第3個元素是:" + list.get(2));
	}
}

再次編譯並執行(注意一定要再次用javac進行編譯,因為原始檔有改動——註釋/刪除了package語句):

原理:

當前工作路徑(即class檔案所在資料夾路徑)為C:\Users\Android\eclipse-workspace\Java Basis\src\training,由於package語句(包名為training)的存在,所以Java執行工具(即java.exe)實際上會在當前工作路徑下再找一個training資料夾(即與package同名的包檔案),然後在此training資料夾中搜尋class檔案。然而當前工作路徑下並沒有另一個training資料夾,就更別說在此資料夾下尋找class檔案了。所以註釋(或刪除)package語句後,Java執行工具會直接在當前工作路徑下尋找class檔案,那就沒毛病了(而不會搜尋一個不存在的資料夾,然後在此資料夾下搜尋class檔案)

解決方法2

方法1其實存在問題,雖然在cmd下能成功執行,但是原始檔在eclipse中會報錯:

這讓人很不舒服,所以還有一種辦法,不用註釋(或刪除)package語句也能在cmd下執行。這需要利用方法1提供的思路,也就是做出與註釋掉package語句等價的行為——編譯檔案後返回上一級路徑(命令:cd..)再執行(但是注意類名前面要加上包名,即java training.ch6_1):