2010-01-06 70 views
2

我写了一个运行在Weblogic 10.3上的Spring应用程序。在这个应用程序中,我有一些JMS Queue使用者。NoClassDefFoundError in spring

有时候,我得到了在应用程序关闭或打开(我看到在这两个情况下这个错误)说的错误:

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

回答

2

该异常意味着该类未被加载到JVM中。确保spring.jar位于Weblogic服务器的类路径或库文件夹中。

+0

这是在我的战争档案:)有什么需要吗? – 2010-01-06 17:08:55

+0

在这种情况下,我猜测你有一些启动/关闭类,调用之前战争文件被加载。我会手动尝试将jar文件放在服务器的类路径或库文件夹中,而不仅仅是在war文件中。有时冗余是最好的解决方案。 – Poindexter 2010-01-06 17:32:22

+0

没有启动或关闭的类,我介绍给Weblogic,但我会给这个镜头:) – 2010-01-08 12:06:13

0

你在战争中拥有这个阶级是很好的,但在Weblogic中,战争有自己的类加载器。由于你的堆栈跟踪显示了一个JMS监听器,我会问:监听器在哪里?如果它在战争中,那么你有一个谜。但它确实看起来好像是在别的地方,而且就是在别的地方,这个春天的班级会缺席。

+0

实际上,监听器在WAR文件中并声明为Spring“Message Driven Pojo” – 2010-02-04 11:08:12