programing

NoClassDefFoundError와 ClassNotFoundException의 원인과 차이점은 무엇입니까?

copyandpastes 2022. 7. 3. 18:21
반응형

NoClassDefFoundError와 ClassNotFoundException의 원인과 차이점은 무엇입니까?

NoClassDefFoundError ★★★★★★★★★★★★★★★★★」ClassNotFoundException

무엇이 그들을 내던지게 하는가?어떻게 해결할 수 있을까요?

새로운 jar 파일을 포함하도록 기존 코드를 수정할 때 이러한 rowable을 자주 볼 수 있습니다.webstart를 통해 배포되는 Java 앱의 경우 클라이언트 측과 서버 측 모두에서 히트하고 있습니다.

생각할 수 있는 이유:

  1. 되지 않은 build.xml
  2. 사용 중인 새 자리의 런타임 클래스 경로가 없습니다.
  3. 버전이 이전 jar와 충돌합니다.

오늘 이런 것들을 접했을 때, 저는 일이 잘 풀리기 위해 추적과 오류를 통해 접근합니다.난 좀 더 명확하고 이해심이 필요해.

Java API 사양과의 차이점은 다음과 같습니다.

의 경우:

응용 프로그램이 다음 명령을 사용하여 문자열 이름을 통해 클래스에 로드하려고 할 때 느려집니다.

  • forName 내의 Class.
  • findSystemClass 내의 ClassLoader.
  • loadClass 내의 ClassLoader

지정된 이름의 클래스에 대한 정의를 찾을 수 없습니다.

의 경우:

또는 Virtual Machine의 느려집니다.ClassLoader로 로드를 수 .을 사용법

현재 실행 중인 클래스를 컴파일할 때 검색된 클래스 정의가 존재했지만 더 이상 정의를 찾을 수 없습니다.

때문에, 「 」, 「 」라고 은,NoClassDefFoundError컴파일 되었을 실행시에 한 「」가 .class파일을 찾을 수 없습니다.파일의 또는 수 있는 일 수 .이 , 한 「JAR」의 모든 .하다, 하다, 하다, 반반반 것것다 만아 만아다class파일이 포함되었습니다.

★★★★★★에 대해서ClassNotFoundException실행 시 클래스에 리플렉티브콜을 발신하려고 하는 것이 원인인 것 같습니다만, 프로그램이 호출하려고 하는 클래스는 존재하지 않습니다.

는 '아주 좋다'는 이다.Error그리고 다른 하나는Exception★★★★★★★★★★★★★★★★NoClassDefFoundError는 입니다.ErrorJava Virtual Machine(Java Virtual Machine)은 Java Virtual Machine(Java 가상 머신)을 사용합니다.으로 기대되고 있던 이, 「컴파일시에 동작할 수 」라고 하는 할 수 없습니다class파일을 찾을 수 없거나 컴파일 시 생성되거나 발견된 파일과 동일하지 않습니다.이 프로그램은 JVM에서 시작할 수 없기 때문에 매우 중요한 오류입니다.

편,는ClassNotFoundException는 입니다.Exception어느 정도 예상되고 회복할 수 있는 것입니다.반성을 사용하면 오류가 발생하기 쉽습니다(예상대로 되지 않을 수 있다는 예상도 있습니다).필요한 클래스가 모두 존재하는지 확인하기 위한 컴파일 시간 체크는 없으므로 원하는 클래스를 찾는 데 문제가 런타임에 나타납니다.

ClassNotFoundException은 보고된 클래스가 ClassLoader에 의해 발견되지 않으면 느려집니다.이는 일반적으로 CLASSPATH에서 클래스가 누락되었음을 의미합니다.또한 문제의 클래스가 부모 클래스로더에 로드된 다른 클래스에서 로드하려고 하므로 자녀 클래스로더로부터의 클래스가 표시되지 않을 수도 있습니다.이는 App Server와 같이 더 복잡한 환경에서 작업할 때 발생하는 경우가 있습니다(WebSphere는 클래스로더 문제로 악명 높습니다).

혼동하기 .java.lang.NoClassDefFoundErrorjava.lang.ClassNotFoundException하지만 중요한 차이점이 있습니다.를 들어 예외 오류' 이후 )java.lang.NoClassDefFoundError는 java . ass 의 、 의의의의의의의 의의 。 (오류) ★★

java.lang.NoClassDefFoundError:
org/apache/activemq/ActiveMQConnectionFactory

ActiveMQConnectionFactory 클래스가 CLASSPATH에 없는 것은 아닙니다.사실은 정반대야.즉, ActiveMQConnectionFactory 클래스가 ClassLoader에 의해 발견되었지만 클래스를 로드하려고 할 때 클래스 정의를 읽는 동안 오류가 발생했습니다.일반적으로 이 문제는 해당 클래스에 정적 블록이 있거나 ClassLoader에서 찾을 수 없는 클래스를 사용하는 멤버가 있는 경우에 발생합니다.따라서 원인을 찾으려면 해당 클래스의 소스(이 경우 ActiveMQConnectionFactory)를 표시하고 정적 블록 또는 정적 멤버를 사용하는 코드를 찾습니다.소스에 액세스 할 수 없는 경우는, JAD 를 사용해 간단하게 디컴파일 합니다.

코드를 조사할 때 다음과 같은 코드 행을 발견했다고 가정하고 CLASSPATH의 SomeClass 클래스가 있는지 확인합니다.

private static SomeClass foo = new SomeClass();

힌트 : 클래스가 속한 항아리를 확인하려면 웹 사이트 jarFinder를 사용하십시오.이를 통해 와일드카드를 사용하여 클래스 이름을 지정할 수 있으며 jars 데이터베이스에서 클래스를 검색할 수 있습니다.jarhoo를 사용하면 동일한 작업을 수행할 수 있지만 더 이상 사용할 수 없습니다.

클래스가 속한 jar를 로컬 경로에서 찾으려면 jarscan(http://www.inetfeedback.com/jarscan/) 등의 유틸리티를 사용합니다.찾을 클래스와 jars 및 zip 파일에서 클래스 검색을 시작할 루트 디렉터리 경로를 지정하기만 하면 됩니다.

NoClassDefFoundError는 기본적으로 링크 오류입니다.오브젝트를 인스턴스화하려고 할 때(정적으로 "new"를 사용하여) 발생하지만 컴파일 중에 오브젝트를 찾을 수 없습니다.

ClassNotFoundException는 보다 일반적이며 존재하지 않는 클래스를 사용하려고 할 때의 런타임 예외입니다.예를 들어, 함수에 매개 변수가 있고 누군가가 해당 인터페이스를 구현하는 클래스를 통과하지만 클래스에 액세스할 수 없습니다., 「」를 의 로딩에 합니다.loadClass() ★★★★★★★★★★★★★★★★★」Class.forName().

NoClassDefFoundError(NCDFE)는 코드가 "new Y()"를 실행하고 Y 클래스를 찾을 수 없을 때 발생합니다.

단순히 다른 코멘트처럼 Y가 클래스 로더에서 누락되었을 수도 있지만, Y 클래스가 서명되지 않았거나 잘못된 시그니처를 가지고 있거나, Y가 코드에는 표시되지 않는 다른 클래스 로더에 의해 로드되었거나, 심지어 Y가 위의 어떤 이유로도 로드되지 않은Z에 의존했을 수도 있습니다.

이 경우 JVM은 X(NCDFE)의 로딩 결과를 기억하고 이유를 알리지 않고 Y를 요청할 때마다 새로운 NCDFE를 던집니다.

A등급을 매기다정적 클래스 b {}public static void main(String args[]) {System.out.println("새로운 b()의 최초 시도");{new b(); } catch(Trowable t) {t.printStackTrace();}을(를) 시도합니다.System.out.println("\n새 b():");{new b(); } catch(Trowable t) {t.printStackTrace();}을(를) 시도합니다.}}

이것을 어딘가에 a.c.로 저장하다

이 코드는 단순히 새로운 "b" 클래스를 두 번 인스턴스화하려고 할 뿐이며, 그 이외에는 버그가 없고, 아무것도 하지 않습니다.

「」로 를 컴파일 .javac a.java 다음 을 하여 을 실행합니다.java -cp . a 없이 수 있습니다 --문장 2행, 문장 2행, 문장 2행, 문장 2행.

그런 다음 "a$b.class" 파일을 삭제하거나 가비지로 채우거나 그 위에 a.class를 복사하여 누락되거나 손상된 클래스를 시뮬레이션합니다.다음과 같이 처리됩니다.

첫 번째 시도 새로운 b():java.displaces를 클릭합니다.NoClassDefFoundError: a$ba.main(a.main:5)에서원인: java.lang.Class Not Found Exception : a$bjava.net 에 접속해 주세요.URLClassLoader$1.run(URLClassLoader.java:200)java.security에 있습니다.Access Controller.doPrivileged(네이티브메서드)java.net 에 접속해 주세요.URLClassLoader.find Class(URL Class Loader.java:188)를 참조해 주세요.ClassLoader.loadClass(ClassLoader.java:307)해질녘에.misc에.Launcher$AppClassLoader.loadClass(Launcher.java:301)를 참조해 주세요.ClassLoader.loadClass(ClassLoader.java:252)
를 참조해 주세요.ClassLoader.loadClass내부(ClassLoader.java:320)...1개 더
두 번째 시도 new b():java.displaces를 클릭합니다.NoClassDefFoundError: a$ba.main(a.main:7)에서

수 경우 )이 클래스는 ( 「」 「ClassNotFoundException」( 「ClassNotFoundError되지 않은 NoClassDefFoundError로 합니다.NoClassDefFoundError( )입니다.new b()(어느 쪽인가) 하다

두 번째 시도도 물론 실패하지만 보시다시피 ClassLoader는 실패한 클래스 로더를 기억하는 것 같기 때문에 랩된 예외는 없습니다.실제로 무슨 일이 일어났는지 전혀 알 수 없는 NCDFE만 보입니다.

따라서 근본 원인이 없는 NCDFE가 발견되면 클래스를 처음 로드한 시점까지 추적하여 오류 원인을 찾을 수 있는지 확인해야 합니다.

http://www.javaroots.com/2013/02/classnotfoundexception-vs.html 에서 :

ClassNotFoundException : 클래스 로더가 클래스 경로에서 필요한 클래스를 찾을 수 없을 때 발생합니다.따라서 기본적으로 클래스 경로를 확인하고 클래스 경로에 클래스를 추가해야 합니다.

NoClassDefFoundError : 이것은 디버깅과 원인 찾기가 더 어렵습니다.이것은 컴파일 시 필요한 클래스가 존재하지만 실행 시 클래스가 변경 또는 제거되거나 클래스의 스태틱이 슬로우된 예외를 초기화하면 느려집니다.로드되는 클래스가 클래스 경로에 있지만 이 클래스에서 필요한 클래스 중 하나가 제거되었거나 컴파일러에 의해 로드되지 않았음을 의미합니다.따라서 이 클래스에 종속된 클래스를 볼 수 있습니다.

:

public class Test1
{
}


public class Test 
{
   public static void main(String[] args)
   {
        Test1 = new Test1();    
   }

}

두 클래스를 컴파일한 후 Test1.class 파일을 삭제하고 Test class를 실행하면 Test1.class 파일이 느려집니다.

Exception in thread "main" java.lang.NoClassDefFoundError: Test
    at Test1.main(Test1.java:5)
Caused by: java.lang.ClassNotFoundException: Test
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 1 more

ClassNotFoundException할 때 에 대한 수 응용 프로그램이 이름을 통해 클래스에 로드하려고 하지만 지정된 이름의 클래스에 대한 정의를 찾을 수 없을 때 느려집니다.

NoClassDefFoundError: 수 Java Virtual Machine이 클래스의 정의에 로드하려고 할 때 해당 클래스의 정의를 찾을 수 없는 경우 느려집니다.

이러한 오류에 대처하는 방법에 대해 각각의 오류와 사고 과정을 파악해야 하는 이유는 무엇입니까?

그들은 가까운 친척이다. a.ClassNotFoundException자바가 특정 클래스를 이름으로 검색하여 정상적으로 로드할 수 없을 때 느려집니다. a.NoClassDefFoundErrorJava가 기존 코드에 링크된 클래스를 찾았을 때 발생하지만 어떤 이유(예: 잘못된 클래스 경로, 잘못된 버전의 Java, 잘못된 버전의 라이브러리)로 인해 찾을 수 없었으며, 무언가 심하게 잘못되었음을 나타내므로 완전히 치명적입니다.

의 배경이는 C의 .dlopen()/dlsym()NCDFE를 사용.두 번째 경우 해당 클래스 파일이 실제로 사용하려는 설정으로 컴파일되어서는 안 됩니다.

예 1:

class A{
 void met(){
   Class.forName("com.example.Class1");
 }
}

ifcom/example/Class1하지 않는 「」를 슬로우 합니다.ClassNotFoundException.

예 2:

Class B{
  void met(){
   com.example.Class2 c = new com.example.Class2();
 }
}

ifcom/example/Class2되지 않았습니다. B가 느려집니다.NoClassDefFoundError.

둘 다 런타임 예외입니다.

ClassNotFoundException은 String을 통해 참조함으로써 클래스를 로드하려고 하면 느려집니다.예를 들어 Class.forName()의 파라미터는 String이며 이로 인해 비활성 바이너리 이름이 클래스 로더에 전달될 가능성이 높아집니다.

ClassNotFoundException은 비활성 바이너리 이름이 발견될 때 느려집니다. 예를 들어 클래스 이름에 '/' 문자가 있으면 ClassNotFoundException을 받게 됩니다.또한 직접 참조된 클래스를 클래스 경로에서 사용할 수 없는 경우에도 느려집니다.

한편 NoClassDefFoundError는 느려집니다.

  • 클래스의 실제 물리적 표현 - .class 파일을 사용할 수 없는 경우,
  • 또는 클래스가 이미 다른 클래스로더에 로드되어 있는 경우(통상 부모 클래스로더는 클래스를 로드하고 있기 때문에 클래스를 다시 로드할 수 없습니다).
  • 또는 호환되지 않는 클래스 정의가 발견된 경우 - 클래스 파일의 이름이 요청된 이름과 일치하지 않습니다.
  • 또는 (가장 중요한 것은) 종속 클래스를 찾아 로드할 수 없는 경우입니다.이 경우 직접 참조된 클래스가 검색되어 로드되었을 수 있지만 종속 클래스를 사용할 수 없거나 로드할 수 없습니다.이는 Class.forName 또는 이와 동등한 메서드를 통해 직접 참조된 클래스를 로드할 수 있는 시나리오입니다.이는 링크에 장애가 있음을 나타냅니다.

즉, NoClassDefFoundError는 클래스 로더가 클래스 정의를 찾거나 로드할 수 없는 경우(ClassNotFoundException의 클래스 문자열 기반 로딩과는 달리) 이전에 존재하지 않았던 클래스를 로드하는 new() 문 또는 메서드 호출에 대해 일반적으로 느려집니다.

최종적으로 ClassNotFoundException 인스턴스가 클래스를 로드할 수 없는 경우 ClassLoader 구현에 의존합니다.대부분의 커스텀클래스로더 실장은 URLClassLoader를 확장하기 때문에 이 작업을 수행합니다.보통 클래스 로더는 메서드 구현에 NoClassDefFoundError를 명시적으로 슬로우하지 않습니다.이 예외는 보통 HotSpot 컴파일러의 JVM에서 슬로우되며 클래스 로더 자체에서 슬로우되지 않습니다.

ClassNotFoundException과 NoClassDefFoundError의 차이점

enter image description here

로도 쉽게 할 수 .Exception그리고 다른 한 명은Error.

예외:예외는 프로그램 실행 중에 발생합니다.프로그래머는 catch block을 시도함으로써 이러한 예외를 처리할 수 있습니다.두 가지 유형의 예외가 있습니다.컴파일 시 발생하는 예외를 확인.런타임 예외는 런타임에 발생하며 일반적으로 잘못된 프로그래밍으로 인해 발생합니다.

오류: 이는 전혀 예외가 아니며 프로그래머의 범위를 벗어납니다.이러한 오류는 보통 JVM에 의해 발생합니다.


enter image description here 이미지 소스

차이점:

ClassNotFoundException:

  • 클래스 로더가 링크에서 바이트 코드를 확인하지 못했습니다.
  • ClassNotFoundException을 사용하다이 예외는 응용 프로그램이 완전 수식 이름을 사용하여 클래스를 로드하려고 할 때 클래스 경로에서 정의를 찾을 수 없는 경우에 발생합니다.
  • ClassNotFoundExceptionClassLoader.loadClass(), Class.forName() 및 ClassLoader.findSystemClass()를 사용하여 실행 시 클래스 이름을 지정함으로써 클래스가 명시적으로 로딩되어 있을 때 표시됩니다.

NoClassDefFoundError:

  • 클래스 로더가 링크에서 클래스의 참조를 확인하지 못했습니다.
  • NoClassDefFoundError입니다.LinkageError입니다.class, class, class는 치명적인 오류입니다.이 문제는 JVM이 새로운 키워드 또는 메서드 호출을 사용하여 클래스를 인스턴스화하려고 할 때 클래스의 정의를 찾을 수 없는 경우에 발생합니다.
  • NoClassDefFoundError는 클래스 또는 임의의 변수액세스로부터의 메서드콜로 인해 클래스가 암묵적으로 로드된 결과입니다.

유사점:

  • 다.NoClassDefFoundError ★★★★★★★★★★★★★★★★★」ClassNotFoundException는 런타임에 클래스를 사용할 수 없는 것과 관련이 있습니다.
  • 다.ClassNotFoundException ★★★★★★★★★★★★★★★★★」NoClassDefFoundError클 자바】【자바】【자바】【자바】【자바】【자바】【자바】

Class Loader sussystem 액션이 지정된 경우:

http://www.artima.com/insidejvm/ed2/images/fig7-1.gif

이 기사는 그 차이를 이해하는 데 큰 도움이 되었습니다.http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-5.html

클래스 로드 중에 오류가 발생할 경우 로드 중인 클래스 또는 인터페이스를 사용하는 프로그램 내의 한 지점에 LinkedError 서브클래스의 인스턴스를 던져야 합니다.

Java Virtual Machine이 검증(55.4.1) 또는 해결(55.4.3) 중에 클래스 C를 로드하려고 할 때(초기화(55.5)가 아님) C 로드를 시작하는 데 사용되는 클래스 로더가 ClassNotFoundException 인스턴스를 슬로우하면 Java Virtual Machine은 NoDefault 인스턴스를 슬로우해야 합니다.ClassNotFoundException을 지정합니다.

ClassNotFoundExceptionNoClassDefFoundError의 근본 원인입니다.
또한 NoClassDefFoundError는 Linking 스텝에서 발생하는 유형 로드 오류의 특수한 경우입니다.

실무에서 생각할 수 있는 한 가지 이유를 추가합니다.

  • ClassNotFoundException: cletus에서 설명한 바와 같이 상속된 인터페이스 클래스가 클래스 경로에 없는 동안 인터페이스를 사용합니다.예를 들어 서비스 프로바이더 패턴(또는 서비스 로케이터)이 존재하지 않는 클래스를 찾으려고 합니다.
  • NoClassDefFoundError: 지정된 클래스의 종속성을 찾을 수 없는 동안 지정된 클래스가 발견되었습니다.

실제로 에러는 사일런트하게 느려질 수 있습니다.예를 들어 타이머 태스크를 송신하면 에러가 발생하지만, 대부분의 경우 프로그램에서 예외만 검출됩니다.그 후 타이머 메인루프는 아무런 정보 없이 종료됩니다.NoClassDefFoundError와 유사한 오류는 예외입니다.InInitializerError: 스태틱인테셜라이저 또는 스태틱 변수의 이니셜라이저가 예외를 발생시키는 경우.

ClassNotFoundException은 Class.forName() 또는 ClassLoader.findSystemClass() 메서드 또는 ClassLoader.loadClass() 메서드를 사용하여 문자열 이름으로 클래스를 로드하도록 JVM에 지시했을 때 발생하는 체크된 예외입니다.

대부분의 경우 이 예외는 필수 JAR 파일로 클래스 경로를 업데이트하지 않고 응용 프로그램을 실행하려고 할 때 발생합니다.예를 들어 JDBC 코드를 실행하여 데이터베이스에 연결할 때 이 예외가 발생할 수 있습니다.MySQL이지만 클래스 경로에 JAR이 없습니다.

NoClassDefFoundError 오류는 JVM이 코드 실행의 일부인 특정 클래스(일반 메서드 호출의 일부 또는 new 키워드를 사용하여 인스턴스를 만드는 일부)를 로드하려고 할 때 발생합니다.이 클래스는 클래스 경로에 존재하지 않지만 컴파일 시에 존재했기 때문에 프로그램을 실행할 필요가 있습니다.컴파일러가 존재하지 않는 클래스를 사용하려고 하면 컴파일 오류가 발생합니다.

아래는 간단한 설명입니다.

enter image description here

자세한 내용은 ClassNotFoundException Vs NoClassDefFoundError에 대한 모든 내용을 참조하십시오.

새로고침이 필요할 때 다음 사항을 몇 번이고 자신에게 상기시킨다.

Class Not Found Exception(클래스 미발견 예외)

클래스 계층

ClassNotFoundException extends ReflectiveOperationException extends Exception extends Throwable

디버깅 중

  1. 필수 jar. 클래스 경로에 클래스가 없습니다.
  2. 필요한 모든 jar가 jvm의 클래스 경로에 있는지 확인합니다.

NoClassDefFoundError(NoClassDefFound 오류)

클래스 계층

NoClassDefFoundError extends LinkageError  extends Error extends Throwable

디버깅 중

  1. 올바르게 컴파일된 클래스를 동적으로 로드하는 데 문제가 있습니다.
  2. 스태틱 블록, 컨스트럭터, 의존 클래스의 init() 메서드에 관한 문제 및 실제 에러는 여러 레이어에 의해 래핑됩니다(특히 spring을 사용하면 실제 예외가 래핑되고 NoClassDefError가 발생합니다).
  3. 종속 클래스의 정적 블록 아래에 "ClassNotFoundException"이 있는 경우
  4. 클래스 버전에 문제가 있습니다.이것은 다른 jar/package에 같은 클래스의 v1, v2 버전이 2개 있는 경우에 발생합니다.v1을 사용하여 정상적으로 컴파일되고 v2가 관련 메서드/vars가 없는 런타임에 로드됩니다.이 예외가 표시됩니다.[클래스 패스에 나타난 여러 개의 항아리 아래에 있는 log4j 관련 클래스의 중복을 제거하여 이 문제를 해결한 적이 있습니다]

ClassNotFoundException 및 NoClassDefFoundError는 실행 시 특정 클래스를 찾을 수 없는 경우에 발생합니다.그러나 이러한 상황은 다른 시나리오에서 발생합니다.

ClassNotFoundException은 Class.forName() 메서드 또는 loadClass() 메서드를 사용하여 실행 시 클래스를 로드하려고 할 때 발생하는 예외로 지정된 클래스가 클래스 경로에 없습니다.

    public class MainClass
    {
        public static void main(String[] args)
        {
            try
            {
                Class.forName("oracle.jdbc.driver.OracleDriver");
            }catch (ClassNotFoundException e)
            {
                e.printStackTrace();
            }
        }
    }



    java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at pack1.MainClass.main(MainClass.java:17)

NoClassDefFoundError는 컴파일 시 특정 클래스가 존재하지만 실행 시 누락되었을 때 발생하는 오류입니다.

    class A
    {
      // some code
    }
    public class B
    {
        public static void main(String[] args)
        {
            A a = new A();
        }
    }

위의 프로그램을 컴파일하면 두 개의 .class 파일이 생성됩니다.하나는 A클래스이고 다른 하나는 B클래스입니다.A.class 파일을 삭제하고 B.class 파일을 실행하면 Java Runtime System은 다음과 같이 NoClassDefFoundError를 슬로우합니다.

    Exception in thread "main" java.lang.NoClassDefFoundError: A
    at MainClass.main(MainClass.java:10)
    Caused by: java.lang.ClassNotFoundException: A
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

언급URL : https://stackoverflow.com/questions/1457863/what-causes-and-what-are-the-differences-between-noclassdeffounderror-and-classn

반응형