Java에서 기본 클래스를 찾거나 로드할 수 없음 오류 수정
- Java에서 잘못된 이름을 전달하여 오류를 찾을 수 없음
- Java에서 잘못된 패키지 이름으로 인해 오류를 찾을 수 없음
- Java의 잘못된 CLASSPATH로 인해 오류를 찾을 수 없음
이 자습서에서는 Java에서 기본 클래스를 찾거나 로드할 수 없음 오류를 소개합니다.
코드를 작성하고 컴파일했다고 가정합니다. 지금까지는 모든 것이 잘 작동하지만 마침내 실행했을 때 오류가 나타났습니다.
could not find or load main class
이 자습서에서는 이 오류가 발생하는 이유와 해결 방법에 대해 설명합니다. 먼저 명령 프롬프트를 사용하여 Java 프로그램을 실행하는 방법을 요약해 보겠습니다.
먼저 아래와 같이 javac 명령을 사용하여 코드를 컴파일합니다.
javac<.java file name>
위의 명령어를 실행하면 .class
확장자를 가진 파일이 현재 폴더에 생성됩니다.
.class
파일은 .java
프로그램과 동일한 클래스를 갖습니다. 그런 다음 다음 명령을 사용하여 .class
파일을 실행하여 Java 코드를 실행합니다.
java<classname>
메인 클래스를 찾거나 로드할 수 없습니다.
오류가 발생할 수 있습니다. 이 오류는 런타임 오류이며 Java 가상 머신이 실행하려는 기본 클래스(기본 메서드가 포함된 클래스)를 찾을 수 없을 때 발생합니다.
이 오류는 명령 프롬프트를 사용하여 Java 프로그램을 실행할 때 가장 일반적으로 발생합니다. 이 오류의 원인을 논의하기 전에 먼저 CLASSPATH에 대해 알아보겠습니다.
Java의 CLASSPATH
이것은 executable.class
및 기타 리소스 파일입니다.
JVM은 이를 사용하여 파일을 찾습니다. 시스템 변수에 CLASSPATH를 명시적으로 설정하지 않는 한 기본 CLASSPATH는 현재 디렉토리입니다.
프로그램을 실행하려면 클래스 이름을 전달해야 합니다. 요점을 설명하기 위해 다음 예를 사용합니다.
public class DelftStack {
public static void main(String args[]) {
System.out.println("Hello from DelftStack");
}
}
먼저 javac 명령을 사용하여 컴파일해 보겠습니다.
C :\Users\User\Documents\DelftStack\java
> javac DelftStack.java C :\Users\USer\Documents\DelftStack\java
>
위의 명령을 실행하면 DelftStack.class
파일이 현재 디렉토리에 생성됩니다. java 명령을 사용하여 해당 파일을 실행해 보겠습니다.
C :\Users\User\Documents\DelftStack\java
> java DelftStack.class Error : Could not find or load main class DelftStack.
class Caused by : java.lang.ClassNotFoundException : DelftStack.class
여기에서 .class
파일을 실행하려고 하기 때문에 오류가 발생합니다. 대신 클래스 이름만 전달하면 됩니다.
아래를 보십시오:
C :\Users\User\Documents\DelftStack\java > java DelftStack Hello from DelftStack
Java에서 잘못된 이름을 전달하여 오류를 찾을 수 없음
메인 클래스를 찾거나 로드할 수 없습니다
는 잘못된 클래스 이름을 전달할 때도 발생할 수 있습니다. 이전 예제를 계속하여 다음과 같이 잘못된 이름으로 프로그램을 실행하려고 하면:
C :\Users\User\Documents\DelftStack\java > java DelftStac Error
: Could not find or load main class DelftStac Caused by : java.lang.ClassNotFoundException
: DelftStac
클래스 이름의 철자가 잘못되었기 때문에 위의 오류가 발생합니다. 여기서 JVM은 존재하지 않는 DelftStac
이라는 클래스를 실행하려고 합니다.
다음과 같이 클래스 이름을 올바르게 입력하여 이 문제를 해결할 수 있습니다.
C :\Users\User\Documents\DelftStack\java > java DelftStack Hello from DelftStack
여기서 우리는 또한 클래스 이름이 대소문자를 구분한다는 점에 주목해야 합니다. Delftstack
클래스를 실행하면 오류가 발생합니다.
아래를 보십시오:
C :\Users\User\Documents\DelftStack\java > java Delftstack Error
: Could not find or load main class Delftstack Caused by : java.lang.NoClassDefFoundError
: Delftstack(wrong name
: Delftstack)
파일을 성공적으로 실행하려면 올바른 철자와 대소문자를 사용해야 합니다.
Java에서 잘못된 패키지 이름으로 인해 오류를 찾을 수 없음
DelftStack
클래스를 com.DelftStack
패키지로 이동해 보겠습니다. 패키지는 유사한 클래스를 함께 유지하는 데 사용됩니다.
다음 코드를 보십시오.
package com.DelftStack;
public class DelftStack {
public static void main(String args[]) {
System.out.println("Hello from DelftStack");
}
}
Java로 패키지를 컴파일하려면 다음 명령을 사용합니다.
javac - d.<.java file name>
-d
플래그 스위치는 생성된 클래스 파일을 보관할 위치를 지정하는 데 사용됩니다. .
현재 디렉토리를 의미합니다.
위의 코드를 다음과 같이 컴파일합니다.
C :\Users\User\Documents\DelftStack\java > javac - d.DelftStack.java
위의 명령을 실행하면 현재 디렉터리에 다음 폴더 구조가 생성됩니다.
com\DelftStack\DelftStack.class
보시다시피 클래스 파일은 현재 디렉토리에서 두 개의 폴더 깊이에 있습니다. 따라서 이전의 경우와 같이 클래스 파일을 실행하려고 하면 오류가 발생합니다.
C :\Users\User\Documents\DelftStack\java > java DelftStack Error
: Could not find or load main class DelftStack Caused by : java.lang.ClassNotFoundException
: DelftStack
이 오류의 원인은 현재 폴더에 DelftStack
클래스가 없기 때문입니다. 패키지에 있는 클래스를 실행하려면 정규화된 이름(이 경우 com.DelftStack.DelftStack
)을 전달해야 합니다.
C :\Users\User\Documents\DelftStack\java > java com.DelftStack.DelftStack Hello from DelftStack
이것은 Java가 com\DelftStack
폴더 내에서 클래스를 찾도록 지시합니다.
Java의 잘못된 CLASSPATH로 인해 오류를 찾을 수 없음
CLASSPATH는 .class
파일이 있는 위치를 JVM에 알려줍니다.
현재 다른 폴더에 있고 클래스 파일이 다른 폴더에 있는 Java 프로그램을 실행하려고 한다고 가정합니다. 이 경우 -classpath
옵션을 사용하여 클래스 파일의 위치를 전달할 수 있습니다.
예를 들어:
java - classpath XYZ / ABC < class name
>
위의 명령은 Java가 ZYX/ABC
폴더에서 .class
파일을 찾도록 지시합니다.
이전의 경우 패키지를 만들었습니다.
com/DelftStack
폴더 내에서 파일을 실행하려고 한다고 가정합니다. 다음 명령을 사용하여 그렇게 할 수 있습니다.
> java - classpath../../ com.DelftStack.DelftStack Hello from DelftStack
../
는 상위 디렉토리를 의미합니다. 따라서 ../../
는 두 개의 디렉토리 수준을 조회하는 것을 의미합니다.
다른 예를 들어 우리가 데스크탑(폴더) 위치에 있고 컴퓨터의 다른 위치에서 클래스 파일을 실행하려고 한다고 가정해 보겠습니다. 우리는 아래에 의해 그렇게 할 수 있습니다.
> java - cp C :\Users\User\Documents\DelftStack\java com.DelftStack.DelftStack Hello from DelftStack
-cp
플래그는 -classpath
의 약어입니다. 여기에서 .class
파일이 있는 폴더의 전체 위치를 전달했습니다.