복붙노트

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

SPRING

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

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

Sep 9, 2009 8:22:23 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet Jersey threw exception
java.lang.NoClassDefFoundError: Could not initialize class SpringFactory
        at com.point2.prospect.persistence.hibernate.HibernateTransactionInterceptor.doFilter(HibernateTrans
actionInterceptor.java:17)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at com.point2.prospect.restapi.ServerErrorInterceptor.doFilter(ServerErrorInterceptor.java:27)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
        at java.lang.Thread.run(Thread.java:619)

나는이 문제가 웹 전체에 묻히는 패턴을 가지고 있음을 알아 차리지 만, 진짜 답이 없다. 이런 종류의 오류에 대한 일반적인 원인은 무엇입니까?

해결법

  1. ==============================

    1.NoClassDefFound 오류는 불투명 한 오류이며 더 심각한 문제를 숨기고 있습니다. ClassNotFoundException (클래스가 존재하지 않는 경우에 슬로우됩니다)와 같지 않습니다.

    NoClassDefFound 오류는 불투명 한 오류이며 더 심각한 문제를 숨기고 있습니다. ClassNotFoundException (클래스가 존재하지 않는 경우에 슬로우됩니다)와 같지 않습니다.

    NoClassDefFound는 클래스가 존재하지 않는다는 것을 나타낼 수 있지만, 일반적으로 클래스 로더가 클래스의 바이트를로드하고 "defineClass"를 호출하면 throw됩니다. 또한 다른 단서 또는 가능한 "원인"예외에 대한 전체 스택 추적을주의 깊게 확인하십시오 (특정 백 트레이스에 아무 것도 표시하지 않음).

    NoClassDefFoundError를 얻을 때 처음 보는 것은 클래스의 정적 비트, 즉 클래스를 정의하는 동안 이루어지는 초기화입니다. 이 작업이 실패하면 NoClassDefFoundError가 throw됩니다. ExceptionInInitializerError를 발생시켜 문제의 세부 정보를 나타내야하지만 내 경험상 이러한 문제는 거의 발생하지 않습니다. ExceptionInInitializerError는 처음 클래스를 정의하려고 할 때만 NoClassDefFound를 던집니다. 따라서 이전 로그를 살펴보십시오.

    나는 HibernateTransactionInterceptor 라인의 코드를보고 그것이 무엇이 필요한지 보도록 제안 할 것이다. SpringFactory 클래스를 정의 할 수없는 것 같습니다. 어쩌면 해당 클래스의 초기화 코드를 확인하십시오. 그것을 디버그 할 수 있다면, 위의 마지막 행 (17)에서 중지하고 디버그하여 예외의 원인이되는 정확한 행을 찾으십시오. ExceptionInInitializerError가 매우 운이 좋으면 로그에서 더 높은 곳을 확인하십시오.

  2. ==============================

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

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

    J2SE API에서 :

  3. ==============================

    3.jar 라이브러리가 다른 Linux 사용자 (루트)에 의해 복사되고 로그인 된 사용자 (프로세스)에 jar 파일 내용을 읽을 수있는 충분한 권한이 없기 때문에 나는 동일한 문제에 직면했습니다.

    jar 라이브러리가 다른 Linux 사용자 (루트)에 의해 복사되고 로그인 된 사용자 (프로세스)에 jar 파일 내용을 읽을 수있는 충분한 권한이 없기 때문에 나는 동일한 문제에 직면했습니다.

  4. ==============================

    4.이 오류가 발생했을 때 OpenJDK를 사용하고 있다는 것을 알았습니다. 오라클 JDK를 대신 설치하면 문제가 해결되었습니다.

    이 오류가 발생했을 때 OpenJDK를 사용하고 있다는 것을 알았습니다. 오라클 JDK를 대신 설치하면 문제가 해결되었습니다.

  5. from https://stackoverflow.com/questions/1401111/noclassdeffounderror-could-not-initialize-class-error by cc-by-sa and MIT license