【问题标题】:Caused by: java.lang.NoClassDefFoundError: Ljavax/transaction/TransactionManager;引起:java.lang.NoClassDefFoundError: Ljavax/transaction/TransactionManager;
【发布时间】:2016-01-25 15:42:33
【问题描述】:

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

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

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

这些是我的应用程序的所有库

另外,根据我在一些帖子上看到的内容,我添加到了我的 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

有什么想法吗?

谢谢

【问题讨论】:

    标签: java hibernate spring-mvc transactions


    【解决方案1】:

    这对我有用

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

    【讨论】:

      【解决方案2】:

      不要担心“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 的一个实现

      【讨论】:

      • 嗨,我编辑了我的帖子,添加了我的事务管理器的 bean。
      • 在您的服务器上,您是否检查了类路径中的库与您计算机上的库是否相同? HibernateTransactionManager 是 spring-orm 提供的,所以应该在战争中。也许您应该尝试在 tomcat 外部类路径中添加 spring-orm 以检查战争中的那个没有被神秘地跳过???
      • 问题出在数据库名称错误。现在我不再收到那个错误了。谢谢。
      • 请编辑问题,以便人们知道您已找到问题的答案。
      【解决方案3】:

      spring-data jar 在哪里?它看起来像 spring-data-commons。请花点时间学习如何使用 maven 或 gradle。这将节省您的大量时间。

      【讨论】:

        【解决方案4】:

        你必须添加这个依赖它是工作

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-02-07
          • 1970-01-01
          相关资源
          最近更新 更多