수정 : 메인 클래스를 찾거나로드 할 수 없습니다

터미널에서 클래스 이름을 지정하여 명령 프롬프트에서 java 명령을 사용하여 Java 프로그램을 시작하면 ' 주 클래스를 찾거나로드 할 수 없습니다 '오류가 발생합니다. 이런 일이 발생하는 이유는 주로 클래스를 선언하는 동안 사용자의 프로그래밍 실수 때문입니다.

기본 클래스를 찾을 수 없거나 Java 명령 행

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

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

'주 클래스를 찾거나로드 할 수 없습니다'메시지는 실행을 위해 클래스를 페치하는 Java 엔진의 첫 번째 단계가 실패했음을 의미합니다. java 명령 이 올바른 디렉토리에서 클래스를 찾을 수 없습니다.

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

'java'구문은 무엇입니까?

실행하려고 할 때 터미널이 오류를 반환하는 이유를 해결하기 전에 먼저 명령 구문을 살펴 봐야합니다. 올바른 구문을 사용하지 않으면 불가피하게이 오류가 발생합니다.

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

 자바 [...] [...] 

다음은 명령 행 옵션이며 완전한 Java 클래스 이름이며 전체 패키지가 컴파일 될 때 애플리케이션에 전달되는 명령 행 인수입니다.

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

 java -Xmx100m com.acme.example.ListAppuals 케빈 화살표 바트 

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

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

'메인 클래스를 찾거나로드 할 수 없습니다'를 수정하는 방법

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

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

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

대신에

 자바리스트 
  • 파일 이름이나 경로 이름을 선언하는 대신 클래스 이름을 선언 해야합니다. 경로 이름 / 파일 이름을 선언하면 Java에서 클래스를 가져 오지 않습니다. 잘못된 항목은 다음과 같습니다.
 java ListAppuals.class java com / acme / example / ListAppuals.class 
  • 케이싱 을 고려해야합니다. Java 명령은 대소 문자를 구분하며 한 글자라도 실수를하면 주 클래스를로드 할 수 없습니다. 잘못된 실수 의 예는 다음과 같습니다.
 java com.acme.example.listappuals 
  • 소스 파일 이름을 선언 해서는 안됩니다 . 앞에서 언급했듯이 올바른 전체 클래스 이름 형식으로 클래스를 선언하면됩니다. 실수의 예는 다음과 같습니다.
 자바 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입니다.
  • 전체 파일 경로 는 다음과 같습니다. /usr/local/acme/classes/com/acme/example/Appuals.class
  • 현재 작업 디렉토리 는 / usr / local / acme / classes / com / acme / example /입니다.

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

 # 잘못, FQN 필요 java Appuals # 잘못, 현재 작업 디렉토리 java com.acme.example.Appuals #에`com / acme / example` 폴더가 없습니다. 위의 시나리오 java -classpath와 유사합니다. com.acme.example.Appuals # OK; 상대 클래스 경로는 java -classpath ../../ .. com.acme.example.Appuals # OK로 설정됩니다. 절대 클래스 경로는 java -classpath / usr / local / acme / classes com.acme.example.Appuals로 설정됩니다. 

참고 : 클래스 경로에는 응용 프로그램에 필요한 다른 모든 클래스 (비 시스템)도 포함해야합니다.

해결 방법 4 : 수업 패키지 확인

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

재미있는 기사