我有一个问题,这个链接错误,我们有相同的代码和工作的项目:
this.plateformTransactionManager = new DataSourceTransactionManager();
this.plateformTransactionManager.setDataSource(dataSource);
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
TransactionStatus status = plateformTransactionManager.getTransaction(def);运行时的堆栈跟踪:
java.lang.LinkageError: loader constraint violation: when resolving method org.springframework.jdbc.datasource.DataSourceTransactionManager.getTransaction(Lorg/springframework/transaction/TransactionDefinition;) Lorg/springframework/transaction/TransactionStatus;" the class loader (instance of org/apache/catalina/loader/WebappClassLoader) of the current class, com/as24/referentiel/daos/ExternalUserDAO, and the class loader (instance of rg/apache/catalina/loader/StandardClassLoader) for resolved class, org/springframework/jdbc/datasource/DataSourceTransactionManager, have different Class Objects for the type org/springframework/transaction/TransactionDefinition used in the Signature我读到这是一个maven依赖错误,但我们只在3.0.7.REALEASE版本上使用了Spring
我在网上找不到任何汤...
发布于 2013-07-16 17:22:34
这是服务器和web应用程序之间共享库的问题。
在java中,类由它的名称(包括包名)和它的类加载器(加载它)来标识。因此,如果您在web应用程序WEB-INF/classes中和${catalina.home}/lib中具有相同的MyBean.class,则它们将被视为两个不同的类(即myBean instanceof MyBean == false)。当某些类在其方法签名中使用类XYZ,并且XYZ由与当前类加载器已知的类XYZ不同的类加载器加载时,则引发LinkageError。
你的问题是,你有Spring依赖(至少spring-tx)在共享/系统类加载器上,也在web应用依赖中。
要解决您的问题,您需要执行以下操作之一:
provided依赖项)endorsed类加载器上添加重复依赖项(通过该web应用程序,类加载器将忽略web应用程序Springhttps://stackoverflow.com/questions/17672517
复制相似问题