Java 응용 프로그램을 실행하려고하는데이 오류가 발생합니다.
java.lang.ClassNotFoundException:
콜론 뒤에는 누락 된 클래스의 위치가 표시됩니다. 그러나 클래스가 다른 곳에 있기 때문에 그 위치가 존재하지 않는다는 것을 알고 있습니다. 해당 클래스의 경로를 어떻게 업데이트 할 수 있습니까? 클래스 경로와 관련이 있습니까?
답변
클래스 경로가 손상되었습니다 ( Java 세계에서 매우 일반적인 문제).
응용 프로그램을 시작하는 방법에 따라 -cp
, MANIFEST.MF의 클래스 경로 항목 또는 디스크 레이아웃에 대한 인수를 수정해야 합니다.
답변
클래스 경로는 클래스를로드 할 위치 목록입니다.
이러한 ‘위치’는 디렉토리 또는 jar 파일 일 수 있습니다.
디렉토리의 경우 JVM은 클래스로드에 대해 예상되는 패턴을 따릅니다. 나는 디렉토리가있는 경우 / myproject라는 / 클래스 : C를 내 클래스 경로에, 나는 클래스로드하려고 com.mycompany.Foo를 그것이라는 디렉토리의 클래스 디렉토리 아래에 보이는 것, co.kr에서 그라는 디렉토리 아래 mycompany 하고, 마지막으로 해당 디렉토리에서 Foo.class 라는 파일을 찾습니다 .
두 번째 인스턴스에서는 jar 파일의 경우 해당 클래스에 대한 jar 파일을 검색합니다. jar 파일은 실제로 위와 같이 압축 된 디렉토리 모음입니다. jar 파일의 압축을 풀면 위의 패턴에 따라 많은 디렉토리와 클래스 파일이 생성됩니다.
따라서 JVM은 클래스 정의를로드하려고 할 때 클래스 정의를 찾기 위해 처음부터 끝까지 클래스 경로를 탐색합니다. 예를 들어, 클래스 경로에서 :
C : / myproject / classes; C : /myproject/lib/stuff.jar; C : /myproject/lib/otherstuff.jar
JVM은 먼저 디렉토리 클래스 를 찾은 다음 stuff.jar 에서 마지막으로 otherstuff.jar 에서 검색을 시도합니다 .
ClassNotFoundException이 발생하면 JVM이 전체 클래스 경로를 통과했지만 참조하려는 클래스를 찾지 못했음을 의미합니다. Java 세계에서 자주 사용되는 솔루션은 클래스 경로를 확인하는 것입니다.
java -cp 를 말한 다음 클래스 경로를 말하여 명령 줄에서 클래스 경로를 정의합니다 . Eclipse와 같은 IDE에는 클래스 경로를 지정하는 메뉴 옵션이 있습니다.
답변
이것은 내가 지금까지 찾은 최고의 솔루션 입니다.
org.mypackage
클래스를 포함하는 라는 패키지가 있다고 가정 합니다.
- HelloWorld (메인 클래스)
- SupportClass
- UtilClass
이 패키지를 정의하는 파일은 물리적으로 디렉터리 D:\myprogram
(Windows) 또는 /home/user/myprogram
(Linux)에 저장됩니다.
Java를 호출 할 때 실행할 애플리케이션의 이름을 지정합니다 org.mypackage.HelloWorld
.. 그러나 패키지를 정의하는 파일과 디렉토리를 찾을 위치도 Java에 알려야합니다. 따라서 프로그램을 시작하려면 다음 명령을 사용해야합니다.
참고 :
java
현재 위치에 관계없이 위의 명령 을 실행 해야합니다. 그러나 이것은javac
. 컴파일을 위해.java
파일 이있는 디렉토리로 직접 이동하여javac ClassName.java
.
답변
클래스의 경로 또는 클래스를 포함하는 jar를 알고 있으면 실행하는 동안 클래스 경로에 추가하십시오. 여기에 언급 된대로 클래스 경로를 사용할 수 있습니다.
Windows에서
java -classpath .;yourjar.jar YourMainClass
UNIX / Linux에서
java -classpath .:yourjar.jar YourMainClass
답변
maven을 사용한다면 이것을 시도하십시오. 내 프로젝트에 maven을 사용 mvn clean install
하고 프로그램을 실행하려고하면 예외가 발생합니다. 그래서 프로젝트를 정리하고 다시 실행하면 저에게 효과적입니다.
이클립스 IDE를 사용합니다.
Junit 테스트를 실행할 때 클래스를 찾을 수 없음 예외의 경우 mvn clean test
한 번 실행 해보십시오 . 모든 테스트 클래스를 컴파일합니다.
답변
명령 줄을 통해 클래스 경로에 클래스 위치를 추가하려면 -cp
또는 -classpath
실행하는 동안 클래스 위치를 추가하기 만하면 됩니다. IE
java -cp "c:/location/of/file" YourProgram
또는 Eclipse와 같은 IDE를 실행하는 경우를 마우스 오른쪽 버튼으로 클릭하고 project -> build path -> configure build path
클래스가 포함 된 외부 JAR을 빌드 경로에 추가하면 제대로 작동합니다.
답변
사용하다 ‘;’ 구분자로. 환경 변수가 올바르게 설정된 경우 설정이 표시되어야합니다. PATH 및 CLASSPATH가 올 바르면 창에서 해당 명령을 인식해야합니다. Java를 설치할 때 컴퓨터를 다시 시작할 필요가 없습니다.