NoClassDefFoundError : 잘못된 이름
NoClassDefFoundError : 잘못된 이름
Netbeans7.0.1을 사용하여 RESTful 웹 서비스를 테스트하는 Java 프로그램을 작성했으며 제대로 작동합니다. 이제 코드를 컴파일하기 위해 build.xml 파일을 작성했으며 생성 된 .class 파일을 실행하려고 할 때 항상이 예외가 발생했습니다.
Exception in thread "main" java.lang.NoClassDefFoundError: ClientREST (wrong name: clientrest/ClientREST)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: ClientREST. Program will exit.
이름과 경로가 정확하므로이 예외가 발생하는 이유는 무엇입니까?
스레드 "main"java.lang.NoClassDefFoundError의 예외 : ClientREST
그래서 당신은 그것을 java ClientREST
. 그것은을 기대하고있어 ClientREST.class
어떤없이 package
.
(잘못된 이름 : clientrest / ClientREST)
어이, 수업에서 package clientrest;
. 패키지 루트에서 실행해야합니다. 한 폴더 위로 이동 clientrest
하여 패키지를 나타내는 폴더 가 포함 된 폴더에 있도록 한 다음 java clientrest.ClientREST
.
당신은해야 하지 안으로 들어가 clientrest
패키지 폴더 및 실행 java ClientREST
.
명령 줄 java를 사용하여이 오류가 발생했습니다.
java -cp stuff/src/mypackage Test
Test.java
패키지에있는 위치 mypackage
.
대신 클래스 경로 -cp
를 기본 폴더 (이 경우 src)로 설정 한 다음 패키지를 파일 이름 앞에 추가해야합니다.
따라서 다음과 같이 보일 것입니다.
java -cp stuff/src mypackage.Test
Garry의 답변에 대해 더 자세히 알아 보려면 : 클래스 경로는 클래스 자체가 상주하는 기본 디렉토리입니다. 따라서 클래스 파일이 여기에 있다면-
/home/person/javastuff/classes/package1/subpackage/javaThing.class
다음과 같이 클래스 경로를 참조해야합니다.
/ home / person / javastuff / classes
따라서 명령 줄에서 실행하려면 전체 명령은 다음과 같습니다.
java -cp / home / person / javastuff / classes package1 / subpackage / javaThing
즉 위의 템플릿은
java_executable -cp 클래스 경로 the_class_itself_within_the_class_path
그것이 내가 마침내 환경에서 수업 경로를 갖지 않고 일하게 된 방법입니다.
아마도 클래스를 생성하는 위치가 클래스 경로에 존재하지 않을 것입니다. 실행하는 동안 실행하는 동안 jvm arg -verbose를 사용하고 클래스가로드되고 있는지 여부를 로그에서 확인합니다.
출력은 또한 clasess가로드되는 위치에 대한 단서를 제공합니다. 클래스 파일이 해당 위치에 있는지 확인하십시오.
아래 구문을 시도하십시오.
Java 파일이 여기에 있다고 가정합니다. fm/src/com/gsd/FileName.java
따라서 아래 구문을 사용하여 실행할 수 있습니다.
(현재 디렉토리를 'fm'으로 만듭니다.)
java src.com.gsd.FileName
참조 URL : https://stackoverflow.com/questions/7509295/noclassdeffounderror-wrong-name