引起:java.lang.NoClassDefFoundError:Ljavax / transaction / TransactionManager;

时间:2016-01-25 15:42:34

标签: java hibernate spring-mvc transactions

我阅读了很多关于错误javax/transaction/TransactionManager的帖子,但这些解决方案都没有解决我的问题。

首先要说的是,当我在服务器上部署我的Web应用程序(使用Spring MVC和Hibernate制作)时,我遇到了这个错误。在我的计算机上,使用Eclipse和Tomcat 7一切正常。

第二件事就是在那台服务器上我有另一个在tomcat /root文件夹下运行的web应用程序(这是一个简单的java应用程序,DOESN&T;它既不使用Spring mvc也不是Hibernate)。我尝试部署的新应用程序正在另一个名为/prova的文件夹下运行。

这些是我的应用程序的所有库  enter image description here

另外,根据我在一些帖子上看到的内容,我添加到我的lib文件夹中:

1)jta-3.1.2.2.jar

2)hibernate3.3.1-jta-1.1.jar

3)javax.transaction.jar

在我的xml文件中,我有这个定义事务管理器的bean

<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
     <property name="sessionFactory" ref="sessionFactory" />
</bean>

奇怪的是,在服务器日志中确切的错误是

Caused by: java.lang.NoClassDefFoundError: Ljavax/transaction/TransactionManager;

javax/transaction/TransactionManager

之前有 L

有什么想法吗?

谢谢

4 个答案:

答案 0 :(得分:1)

不要担心“ L ”,它只是定义以下是一个对象。你可以找到其他字母:

BaseType
B     byte (signed byte)
C     char (Unicode character)
D     double (double-precision floating-point value)
F     float (single-precision floating-point value)
I     int (integer)
J     long (long integer)
L<classname>;     reference (an instance of class <classname>)
S     short (signed short)
Z     boolean (true or false)
[     reference (one array dimension )

要回到您的问题,您是否定义了与此相近的事务管理器:

<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager" p:sessionFactory-ref="sessionFactory">
</bean>

HibernateTransactionManager是javax.transaction.TransactionManager的实现

答案 1 :(得分:1)

这对我有用

<dependency>
    <groupId>javax.transaction</groupId>
    <artifactId>javax.transaction-api</artifactId>
    <version>1.3</version>
</dependency>

答案 2 :(得分:0)

您必须添加此依赖性这是可行的

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
     <version>5.4.2.Final</version>
    </dependency>

答案 3 :(得分:-1)

哪里是spring-data罐子?它看起来像spring-data-commons。请花一些时间学习如何使用maven或gradle。它会节省你很多时间。