programing tip

NoClassDefFoundError : 잘못된 이름

itbloger 2021. 1. 11. 07:44
반응형

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

반응형