programing

"NoClassDefFoundError: 클래스를 초기화할 수 없습니다" 오류

muds 2023. 3. 17. 22:03
반응형

"NoClassDefFoundError: 클래스를 초기화할 수 없습니다" 오류

프로젝트를 실행하면 다음과 같은 오류가 많이 발생합니다.

2009년 9월 9일 8:22:23 AM org.apache.catalina.core.Standard Wrapper Valve 호출심각도: Servlet Jersey의 Servlet.service()가 예외를 발생시켰습니다.java.displaces를 클릭합니다.NoClassDefFoundError: SpringFactory 클래스를 초기화할 수 없습니다.com에서.point2.contraction.contracte.contractate.휴지 상태 트랜잭션Interceptor.doFilter(하이버네이트트랜스)actionInterceptor.java:17)org.dev.inna.core에 있습니다.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
org.dev.inna.core에 있습니다.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)com에서.point2.syslog.restapi.서버 오류Interceptor.doFilter(ServerError)Interceptor.java:27)org.dev.inna.core에 있습니다.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
org.dev.inna.core에 있습니다.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)org.dev.inna.core에 있습니다.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
org.dev.inna.core에 있습니다.Standard Context Valve.invoke(Standard Context Valve.java:191)org.dev.inna.core에 있습니다.표준.HostValve.invoke(표준)HostValve.java:128)org.g.g.g.g.g.g.g.g.gErrorReportValve.invoke(ErrorReportValve.java:102)org.dev.inna.core에 있습니다.Standard Engine Valve.invoke(Standard Engine Valve.java:109)org.g.g.g.g.g.g.g.g.g코요테 어댑터서비스(CoyoteAdapter.java:286)org.disc.siscote에 있습니다.http11.Http11Processor.process(Http11Processor.java:845)org.disc.siscote에 있습니다.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol).자바: 583)org.apache.tomcat.util.net 에 접속해 주세요.JIoEndpoint$Worker.run(JIoEndpoint.java:447)를 참조해 주세요.Thread.java:619)

이 문제는 웹에서 질문하는 패턴이 있지만 실제 답변은 없습니다.이러한 오류의 일반적인 원인은 무엇입니까?

NoClassDefFound 오류는 불분명한 오류이며 더 심각한 문제를 숨기고 있는 경우가 많습니다.ClassNotFoundException(클래스가 존재하지 않을 때 느려지는)과는 다릅니다.

noClassDefFound는 javadocs가 나타내듯이 클래스가 존재하지 않음을 나타낼 수 있지만 일반적으로 클래스 로더가 클래스의 바이트를 로드하고 "defineClass"를 호출한 후 클래스가 느려집니다.또, 풀 스택 트레이스에 다른 단서나 생각할 수 있는 「원인」의 예외도 주의 깊게 체크해 주세요(단, 특정의 역추적에는 아무것도 표시되지 않습니다).

NoClassDefFoundError가 발생했을 때 가장 먼저 표시되는 곳은 클래스의 스태틱비트(클래스 정의 중 발생하는 초기화)입니다.실패하면 NoClassDefFoundError가 느려집니다.예외가 느려집니다.InInitializerError로 문제의 상세 내용을 나타내지만, 제 경험상 이러한 경우는 거의 없습니다.예외만 수행합니다.InInitializerError는 처음 클래스를 정의하려고 하면 NoClassDefFound를 슬로우합니다.이전 로그를 보십시오.

따라서 Hibernate Transaction에서 코드를 볼 것을 제안합니다.요격기 선과 그것이 필요로 하는 것을 확인합니다.Spring Factory 클래스를 정의할 수 없는 것 같습니다.그럼 그 클래스의 초기화 코드를 확인하면 도움이 될 겁니다.디버깅이 가능한 경우 위의 (17) 마지막 행에서 디버깅을 중지하고 에 디버깅하여 예외의 원인이 되고 있는 정확한 행을 찾습니다.또한 로그 상단에서 확인하십시오. 매우 운이 좋으면 예외가 있을 수 있습니다.InInitializerError 입니다.

필요한 클래스 정의가 누락되어 있습니다.일반적으로 필요한 JAR이 클래스 경로에 없기 때문에 발생합니다.

J2SE API에서:

퍼블릭 클래스 NoClassDefFoundError가 LinkedError를 확장함

Java Virtual Machine 또는 ClassLoader 인스턴스가 클래스의 정의에 로드하려고 할 때(일반 메서드 호출의 일부 또는 새 식을 사용하여 새 인스턴스를 만들 때) 호출됩니다. 클래스 정의를 찾을 수 없습니다.

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

jar 라이브러리는 다른 Linux 사용자(root)에 의해 복사되어 로그인한 사용자(프로세스)에게 jar 파일 내용을 읽을 수 있는 충분한 권한이 없었기 때문에 같은 문제에 직면했습니다.

이런 게 있었어요.

 class Util {
  static boolean isNeverAsync = System.getenv().get("asyncc_exclude_redundancy").equals("yes");
}

env var가 문자열 대신 null을 반환할 수 있습니다.그래서 내 이론을 테스트하기 위해, 나는 그것을 다음과 같이 바꿨다.

 class Util {
  static boolean isNeverAsync = false;
}

문제는 사라졌습니다.자바가 오류의 정확한 스택 트레이스를 제공하지 못하는 것은 유감입니다만, 좀 이상합니다.

최근 Windows 10에서 이 오류가 발생했습니다.창에 프로젝트에 필요한 .dll 파일이 검색되었지만 CLASSPATH 또는 -Djava.library.path가 아닌 시스템 경로인 PATH에서 검색되었기 때문에 찾을 수 없었습니다.

같은 에러가 발생했는데 알고 보니 무한 루프와 같은 메서드가 몇 번이고 호출되고 있었습니다만, 실제로는 루프가 아니었습니다.

이 에러를 보고 OpenJDK를 사용하고 있는 것을 깨달았습니다.Oracle JDK를 설치한 후 수정했습니다.

언급URL : https://stackoverflow.com/questions/1401111/noclassdeffounderror-could-not-initialize-class-error

반응형