1. Could not find or load main class
란?
Could not find or load main class
오류는 Java 애플리케이션을 실행하려고 할 때 메인 클래스를 찾거나 로드하지 못했을 때 발생합니다. 이는 Java 프로그램의 진입점인 main
메서드를 포함한 클래스가 제대로 설정되지 않았거나 실행 환경에서 찾을 수 없을 때 주로 나타납니다.
2. 주요 원인
2.1 클래스 이름 오류
- 잘못된 클래스 이름을 지정한 경우:
- 예:
java HelloWorld
대신java helloWorld
를 입력. - 대소문자가 구분됩니다.
- 예:
- 클래스 이름에 패키지가 포함되지 않은 경우:
- 예:
java HelloWorld
대신java com.example.HelloWorld
필요.
- 예:
2.2 잘못된 클래스 경로 설정
- 클래스가 저장된 경로가
CLASSPATH
에 포함되지 않았습니다. -classpath
옵션으로 지정한 경로가 잘못되었거나 누락되었습니다.
2.3 패키지 선언 및 디렉토리 구조 불일치
- 클래스가 패키지에 선언되었지만, 디렉토리 구조가 일치하지 않는 경우.
- 예:
com.example.HelloWorld
는com/example/HelloWorld.class
에 있어야 합니다.
- 예:
2.4 main
메서드 누락
- 클래스에
public static void main(String[] args)
메서드가 없거나 서명이 잘못된 경우.
2.5 빌드 파일 문제
- JAR 파일 실행 시
MANIFEST.MF
파일에Main-Class
속성이 누락되었거나 잘못 설정된 경우.
3. 해결 방법
3.1 클래스 이름 확인
- 클래스 이름은 반드시 **완전한 클래스 이름(FQN)**이어야 합니다.
java com.example.HelloWorld
3.2 클래스 경로 설정
- 클래스 파일이 위치한 디렉토리를
-classpath
로 설정: java -classpath /path/to/classes com.example.HelloWorld
- 여러 JAR 파일을 사용하는 경우:
java -classpath "lib/*:." com.example.HelloWorld
3.3 패키지 구조 확인
- 클래스 파일이 패키지 선언에 따라 올바른 디렉토리에 있는지 확인.
com.example.HelloWorld
→com/example/HelloWorld.class
3.4 main
메서드 추가
main
메서드가 다음과 같이 정확히 선언되었는지 확인:public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } }
3.5 JAR 파일 실행 설정
- JAR 파일 실행 시
MANIFEST.MF
에Main-Class
를 설정해야 합니다: Main-Class: com.example.HelloWorld
- 실행 명령:
java -jar myapp.jar
4. 추가 팁
4.1 디버깅 옵션 사용
- 디버깅을 위해
-verbose
옵션을 추가하여 클래스 로드 경로를 확인합니다. java -verbose:class com.example.HelloWorld
4.2 IDE 설정 확인
- IntelliJ, Eclipse 같은 IDE에서:
- 실행 구성을 확인하고, 메인 클래스와 클래스 경로를 정확히 설정하세요.
5. 결론
Could not find or load main class
오류는 주로 클래스 이름, 클래스 경로, 패키지 구조, main
메서드 설정 오류에서 발생합니다. 올바른 클래스 이름과 경로를 지정하고, main
메서드를 확인하면 문제를 해결할 수 있습니다.