Computer >> 컴퓨터 >  >> 문제 해결 >> Windows 오류

수정:기본 클래스를 찾거나 로드할 수 없음

오류 '기본 클래스를 찾거나 로드할 수 없음 '는 명령 프롬프트에서 java 명령을 사용하여 터미널에서 클래스 이름을 지정하여 Java 프로그램을 시작할 때 발생합니다. 이런 일이 발생하는 이유는 대부분 사용자가 클래스를 선언할 때 프로그래밍을 잘못했기 때문입니다.

수정:기본 클래스를 찾거나 로드할 수 없음

앞서 언급했듯이 이 오류는 대부분 시스템과 관련이 없으며 사용자는 아래와 같이 여러 시나리오에서 실수를 합니다. 계속 진행하기 전에 Java 프로그래밍 언어와 작동 방식에 대한 기본 지식이 있다고 가정합니다.

Java에서 '메인 클래스를 찾거나 로드할 수 없음' 오류의 원인은 무엇입니까?

'메인 클래스를 찾거나 로드할 수 없습니다'라는 메시지는 실행을 위해 클래스를 가져오는 Java 엔진의 첫 번째 단계가 실패했음을 의미합니다. 자바 명령 찾을 수 없습니다. 올바른 디렉토리의 클래스입니다.

경우에 따라 올바른 파일 경로를 추가해야 합니다. Java 터미널을 올바른 위치로 지정하십시오. 명령줄 터미널에서 명령을 실행하기 때문에 컴퓨터는 클래스가 어디에 있는지 또는 어디에 있는지 알지 못합니다. 대상 IDE에서는 IDE가 현재 작업 디렉토리를 가리키는 포인터를 유지하므로 문제가 되지 않습니다.

'java ' 구문이란 무엇입니까?

터미널이 실행을 시도할 때 오류를 반환하는 이유에 대한 문제 해결을 시작하기 전에 먼저 명령 구문을 살펴봐야 합니다. 올바른 구문을 사용하지 않으면 필연적으로 이 오류에 직면하게 됩니다.

명령의 일반적인 구문은 다음과 같습니다.

 java [ <option> ... ] <class-name> [<argument> ...]

여기서

유효한 명령의 예는 다음과 같습니다.

java -Xmx100m com.acme.example.ListAppuals kevin arrows bart

위의 명령은 java 명령이 다음 작업을 실행하도록 합니다.

  • 'com.acme.example.ListAppuals 클래스의 컴파일된 버전을 검색합니다. '.
  • 검색 후 클래스를 로드합니다.
  • 다음으로, 클래스가 로드되면 유효한 서명, 수정자 및 반환 유형이 있는 '메인' 메서드를 클래스에서 검색합니다. 샘플 기본 클래스는 다음과 같습니다.
public static void main(String[])
  • 이 메서드는 'kevin', 'arrows' 및 'bart' 인수를 string[]으로 사용하여 호출됩니다.

'메인 클래스를 찾거나 로드할 수 없음' 해결 방법

해결 방법 1:클래스 이름 인수 확인

사용자가 저지르는 가장 흔한 실수는 잘못된 클래스 이름을 인수로 제공하는 것입니다(또는 올바른 클래스 이름은 잘못된 형식입니다). 명령줄에서 매개변수를 선언하기 때문에 잘못된 형식으로 클래스 이름 인수를 전달할 가능성이 높습니다. 여기에서는 실수할 수 있는 모든 가능한 시나리오를 나열합니다.

  • 간단한 클래스 이름 작성 . 'com.acme.example'과 같은 패키지에서 클래스를 선언하는 경우 전체 클래스 이름 을 사용해야 합니다. Java 명령에 패키지 포함
java com.acme.example.ListAppuals

대신

java ListAppuals
  • 클래스 이름을 선언해야 합니다. 파일 이름이나 경로 이름을 선언하는 대신. Java는 경로 이름/파일 이름을 선언하면 클래스를 가져오지 않습니다. 잘못됨 항목에는 다음이 포함됩니다.
java ListAppuals.class

java com/acme/example/ListAppuals.class
  • 케이스 고려되어야 합니다. Java 명령은 대소문자를 구분하므로 한 글자라도 실수하면 기본 클래스를 로드할 수 없습니다. 잘못된 실수의 예
java com.acme.example.listappuals
  • 당신은 해서는 안 됩니다 소스 파일 이름 선언 . 앞에서 언급했듯이 올바른 전체 클래스 이름 형식으로 클래스를 선언하기만 하면 됩니다. 실수의 예는 다음과 같습니다.
java ListAppuals.java
  • 이 오류는 입력 실수를 하는 경우에도 발생합니다. 또는 클래스 이름을 완전히 쓰는 것을 잊어버려 .

클래스 이름을 잘못 선언했다면 수정한 후 프로그램을 실행해 보세요.

해결책 2:클래스 경로 확인

클래스 이름을 올바르게 선언했지만 여전히 오류가 표시되면 java 명령이 경로에서 지정된 클래스 이름을 찾지 못했을 가능성이 있습니다. 클래스 경로는 Java 런타임이 리소스 및 클래스 파일을 검색하는 경로입니다. 아래와 같이 두 가지 다른 명령을 사용하여 클래스 경로를 쉽게 설정할 수 있습니다.

C:> sdkTool -classpath classpath1;classpath2...

C:> set CLASSPATH=classpath1;classpath2...

클래스 경로에 대한 더 많은 통찰력을 얻으려면 다음 문서를 확인해야 합니다.

자바 명령 문서

클래스 경로 설정

해결책 3:디렉토리 확인

디렉토리를 클래스 경로로 선언하면 항상 네임스페이스의 루트에 해당합니다. 예를 들어 "/usr/local/acme/classes"가 클래스 경로에 있으면 Java는 "com.acme.example.Appuals" 클래스를 검색합니다. 다음 경로 이름을 가진 클래스를 찾습니다.

/usr/local/acme/classes/com/acme/example/Appuals.class

따라서 본질적으로 클래스 경로에 다음 주소를 입력하면 Java가 클래스를 찾을 수 없습니다.

/usr/local/acme/classes/com/acme/example

하위 디렉토리 도 확인해야 합니다. FQN과 일치하는지 확인합니다. 클래스 FQN이 "com.acme.example.Appuals"인 경우 Java는 "com/acme/example" 디렉토리에서 "Appuals.class"를 검색합니다.

예를 들어 다음 시나리오를 가정해 보겠습니다.

  • 실행하려는 클래스는 com.acme.example.Appuals입니다.
  • 전체 파일 경로 is:/usr/local/acme/classes/com/acme/example/Appuals.class
  • 현재 작업 디렉토리 is:/usr/local/acme/classes/com/acme/example/

그러면 다음 시나리오가 유지됩니다.

# wrong, FQN is needed

java Appuals

# wrong, there is no `com/acme/example` folder in the current working directory

java com.acme.example.Appuals

# wrong, similar to above scenario

java -classpath . com.acme.example.Appuals

# OK ; a relative classpath is set

java -classpath ../../.. com.acme.example.Appuals

# OK; an absolute classpath is set

java -classpath /usr/local/acme/classes com.acme.example.Appuals
입니다.

참고: 클래스 경로에는 애플리케이션에 필요한 다른 모든 클래스(비시스템)도 포함되어야 합니다.

해결책 4:수업 패키지 확인

위의 모든 솔루션이 귀하의 경우에 해당한다면 소스 코드가 올바른 폴더에 있는지 확인해야 합니다. 또한 패키지를 올바르게 선언했습니다. . IDE로 코드를 실행하면 문제에 대해 알려줄 것입니다. 그러나 우리의 경우 명령 프롬프트에서 실행하기 때문에 실수가 눈에 띄지 않고 논의 중인 클래스 오류가 발생합니다.