복붙노트

[SPRING] 봄에 NoClassDefFoundError

SPRING

봄에 NoClassDefFoundError

Weblogic 10.3에서 실행되는 Spring 애플리케이션을 작성했습니다. 이 응용 프로그램에는 JMS 대기열 사용자가 있습니다.

가끔 응용 프로그램이 닫히거나 열릴 때 오류가 발생합니다 (두 경우 모두에서이 오류가 발생했습니다).

    java.lang.NoClassDefFoundError: org/springframework/jms/connection/SmartConnectionFactory
        at org.springframework.jms.connection.ConnectionFactoryUtils.releaseConnection(ConnectionFactoryUtils.java:72)
        at org.springframework.jms.listener.AbstractJmsListeningContainer.refreshSharedConnection(AbstractJmsListeningContainer.java:385)at org.springframework.jms.listener.DefaultMessageListenerContainer.refreshConnectionUntilSuccessful(DefaultMessageListenerContainer.java:779)
        at org.springframework.jms.listener.DefaultMessageListenerContainer.recoverAfterListenerSetupFailure(DefaultMessageListenerContainer.java:761)
        at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:892)
        at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.ClassNotFoundException: org.springframework.jms.connection.SmartConnectionFactory
        at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:283)
        at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:256)
        at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAwareClassLoader.java:54)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:303)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
        at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:176)
        at weblogic.utils.classloaders.ChangeAwareClassLoader.loadClass(ChangeAwareClassLoader.java:35)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:316)
        ... 6 more

이 오류가 발생하는 이유는 무엇이며 어떻게 해결해야합니까? spring.jar의 버전은 2.5.5입니다.

해결법

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

    1.이 예외는 클래스가 JVM으로로드되지 않음을 의미합니다. spring.jar이 Weblogic 서버의 클래스 경로 또는 라이브러리 폴더에 있는지 확인하십시오.

    이 예외는 클래스가 JVM으로로드되지 않음을 의미합니다. spring.jar이 Weblogic 서버의 클래스 경로 또는 라이브러리 폴더에 있는지 확인하십시오.

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

    2.전쟁에서이 클래스를 사용하는 것은 매우 좋은 일이지만, Weblogic에서는 전쟁 자체 클래스 로더가 있습니다. 스택 추적에 JMS 수신기가 표시되므로 다음과 같이 묻습니다. 그것이 전쟁에 있다면, 당신은 신비가 있습니다. 그러나 그것은 마치 다른 곳에있는 것처럼 보이고, 다른 곳에서이 Spring 클래스를 놓치게됩니다.

    전쟁에서이 클래스를 사용하는 것은 매우 좋은 일이지만, Weblogic에서는 전쟁 자체 클래스 로더가 있습니다. 스택 추적에 JMS 수신기가 표시되므로 다음과 같이 묻습니다. 그것이 전쟁에 있다면, 당신은 신비가 있습니다. 그러나 그것은 마치 다른 곳에있는 것처럼 보이고, 다른 곳에서이 Spring 클래스를 놓치게됩니다.

  3. from https://stackoverflow.com/questions/2014465/noclassdeffounderror-in-spring by cc-by-sa and MIT license