Java TransactionSynchronization.afterCompletion中存在不兼容的ClassChangeError

Java TransactionSynchronization.afterCompletion中存在不兼容的ClassChangeError,java,spring,spring-jms,incompatibility,jmstemplate,Java,Spring,Spring Jms,Incompatibility,Jmstemplate,每次我用JmsTemplate发送消息时,都会引发异常。(我使用弹簧3.0.5.释放)。我找不到不兼容的类 我的类路径中的Spring JAR: 错误日志: springframework.transaction.support.TransactionSynchronizationUtils.invokeAfterCompletion(136) | TransactionSynchronization.afterCompletion threw exception java.lang.Inco

每次我用JmsTemplate发送消息时,都会引发异常。(我使用弹簧3.0.5.释放)。我找不到不兼容的类

我的类路径中的Spring JAR:

错误日志:

springframework.transaction.support.TransactionSynchronizationUtils.invokeAfterCompletion(136) | TransactionSynchronization.afterCompletion threw exception
java.lang.IncompatibleClassChangeError: Class org.springframework.jms.connection.JmsResourceHolder does not implement the requested interface org.springframework.transaction.support.ResourceHolder
    at org.springframework.transaction.support.ResourceHolderSynchronization.afterCompletion(ResourceHolderSynchronization.java:105)
    at org.springframework.transaction.support.TransactionSynchronizationUtils.invokeAfterCompletion(TransactionSynchronizationUtils.java:133)
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.invokeAfterCompletion(AbstractPlatformTransactionManager.java:904)
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerAfterCompletion(AbstractPlatformTransactionManager.java:879)
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:707)
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:632)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:314)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:116)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:621)
    at ...

当第三方版本不兼容时,通常会出现此类问题

在这种情况下,尝试“对齐”弹簧罐-使用相同的弹簧版本。 这将解决您的问题


希望这能有所帮助。

当第三方版本不兼容时,通常会出现此类问题

在这种情况下,尝试“对齐”弹簧罐-使用相同的弹簧版本。 这将解决您的问题


希望这能有所帮助。

JmsResourceHandler扩展了org.springframework.transaction.support.ResourceHolderSupport;而ResourceHolderSupport实现了ResourceHolder

ResourceHolderSupport位于两个罐子中:

  • Spring-dao-2.0.8
  • 弹簧-tx-3.0.5.释放

我使用Spring-orm-3.0.5.Release而不是Spring-hibernate3-2.0.8解决了这个问题。

JmsResourceHandlerextendsorg.springframework.transaction.support.ResourceHolderSupport;而ResourceHolderSupport实现了ResourceHolder

ResourceHolderSupport位于两个罐子中:

  • Spring-dao-2.0.8
  • 弹簧-tx-3.0.5.释放

我通过使用Spring-orm-3.0.5.Release而不是Spring-hibernate3-2.0.8解决了这个问题。

为什么要使用Spring jdbc、Spring-hibernate3和Spring dao的2.0.8版本?我使用Spring-hibernate3(最后一个版本是2.0.8)作为其HibernateDaoSupport!尝试使用spring orm而不是spring-hibernate3。请看。为什么您要使用SpringJDBC、spring-hibernate3和SpringDAO的2.0.8版?我使用spring-hibernate3(它的最后一个版本是2.0.8)作为它的HibernateDaoSupport!尝试使用spring orm而不是spring-hibernate3。换句话说,您需要覆盖可传递依赖项,以便使用所有SpringJAR的相同版本。您不能混合和匹配,尤其是当版本相距很远(几年)时。换句话说,您需要覆盖可传递的依赖项,以便使用所有spring JAR的相同版本。你不能混搭,尤其是当版本相距太远(几年)的时候。