Java error - Could not find the main class


오류내용

  • 한국말로는
    • 오류 : 기본클래스를 찾거나 로드 할 수 없습니다.
  • 영어로는
    • Could not find the main class

상세내용

오류 기본 클래스 을(를) 찾거나 로드할 수 없습니다

이클립스 같은 IDE 로 실행 시 에는 오류가 나지 않지만

터미널로 접속하여 프로젝트 폴더를 접근하여 실행하면 이와 같은 오류가 발생 합니다.

일반 java 프로젝트로 생성하여 테스트를 할 때 jar 파일 묶어서 실행을 하게 될 텐데

jar 파일 묶을 때는 실행파일을 지정하여 이와 같은 문제가 발생하지 않지만

특정 java 파일만 터미널에서 실행하려고 하는 경우 입니다.

CASE

프로젝트 패키지 구조가 아래와 같다고 가정 하고 다음과 같은 코드로 코딩이 되어있다고 가정합시다.

package com.exec;

import java.util.ArrayList;
import java.util.List;

public class Executor {

	public static boolean s_gbn = false; 
	
	public static void main(String ... args) throws Exception {
		// parameter check
		acceptArgs(args);
		
		if(!s_gbn){ System.out.println("Wrong Parameters"); return;}
	}

    public void acceptArgs(String ... args) throws Exception {
        ...
    }
}

보통 터미널에서 이 자바코드를 실행하고 싶다면 아래와 같이 접근하여 명령어를 수행 할 것 입니다.

아래와 같이 수행하면 오류가 발생 합니다.

키 포인트는 클래스 파일에 package com.exec 이 부분 입니다.

패키지에 속해 있는 이상 해당 클래스 파일은 단일 Executor 로써 실행 되지 못 합니다.

여러 실행 방법이 있겠지만 javac 를 이용하여 컴파일 후 사용 한다 던지…

이렇게 실행하면 프로젝트 안에 예기치 않은 파일들이 생성 되기 떄문에 추천하고 싶지 않은 방법 입니다.

이렇게 프로젝트를 생성하여 패키지를 만들고 진행 중에 터미널로 class 파일을 테스트 해보고 싶다면

bin 폴더를 이용하는 것을 추천 합니다.

-- 하기와 같이 수행하면 오류가 발생 합니다.
C:\ ... com\exec> java Execute.java tese1 test2
오류 : 기본클래스를 찾거나 로드 할 수 없습니다.

실행 방법

프로젝트를 생성하면 기본적으로 소스폴더 (java 파일들) 와 bin폴더 (class 파일들)이 존재하게 됩니다.

workspace에 폴더 구조는 아래와 같습니다.

+---.settings
+---bin
|   +---com
+---src
|   +---com

이미 컴파일 되어 있는 class 파일을 이용하여 테스트 합니다.

위치는 bin root 여야 합니다.


c:\...\bin> java -cp . com.exec.Executor test test2
test