【问题标题】:Hibernate 4 javax/transaction/SystemException error休眠 4 javax/事务/SystemException 错误
【发布时间】:2013-08-08 11:51:52
【问题描述】:

我正在尝试让 Hibernate 4.3 与我的 MySQL 数据库一起工作。我已经能够在 Eclipse 中使用 Hibernate Code Generation 工具,并且还能够使用 Hibernate Configurations 工具连接到数据库。

但是,当我尝试在我的 Main 类中运行查询数据库的代码时,我收到以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: javax/transaction/SystemException
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at org.jboss.logging.Logger.getMessageLogger(Logger.java:2248)
at org.jboss.logging.Logger.getMessageLogger(Logger.java:2214)
at org.hibernate.cfg.Configuration.<clinit>(Configuration.java:184)
at be.comp.permanenties.HibernateUtil.<clinit>(HibernateUtil.java:15)
at be.comp.dao.balie.ZitdagenDAOMySQL.findByMaCode(ZitdagenDAOMySQL.java:31)
at be.comp.permanenties.Main.main(Main.java:19)
Caused by: java.lang.ClassNotFoundException: javax.transaction.SystemException
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 8 more

我的 HibernateUtil.java 文件中的代码是:

import org.apache.commons.lang3.SystemUtils;
import org.hibernate.HibernateException;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

public class HibernateUtil {

private static final SessionFactory sessionFactoryBalie = new Configuration().configure("mysql_balie.cfg.xml").buildSessionFactory();

public static SessionFactory getSessionFactoryBalie() {
    return sessionFactoryBalie;
}

}

mysq_balie.cfg.xml 文件如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

    <!-- Development -->

    <property name="hibernate.connection.url">jdbc:mysql://127.0.0.1:3306/balie?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=iso-8859-1</property>
    <property name="hibernate.connection.username">username</property>
    <property name="hibernate.connection.password">password</property>
    <property name="hibernate.default_catalog">db</property>

    <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>

    <!-- JDBC connection pool (use the built-in) -->
    <property name="hibernate.connection.pool_size">1</property>

    <!-- Enable Hibernate's automatic session context management -->
    <property name="hibernate.current_session_context_class">thread</property>
    <!-- <property name="hibernate.current_session_context_class">org.hibernate.context.internal.ThreadLocalSessionContext</property>-->

    <!-- Disable the second-level cache -->
    <property name="hibernate.cache.provider_class">org.hibernate.cache.NoCacheProvider</property>

    <!-- Echo all executed SQL to stdout -->
    <property name="hibernate.show_sql">true</property>

    <!-- Drop and re-create the database schema on startup -->
    <property name="hibernate.hbm2ddl.auto">update</property>

    <!-- List of XML mapping files -->
    <mapping resource="be/comp/model/balie/Zitdagen.hbm.xml"/>
</session-factory>

我无法弄清楚错误可能出在哪里。欢迎所有帮助。谢谢。

【问题讨论】:

    标签: hibernate


    【解决方案1】:

    你缺少 jta.jar
    用 maven 添加这个 dep:

      <dependency>
          <groupId>javax.transaction</groupId>
          <artifactId>jta</artifactId>
          <version>1.1</version>
      </dependency>
    

    或从 maven 存储库下载并添加到您的 CLASSPATH

    【讨论】:

    • Gr8.. 这是 5.0.6.Final 中的错误,已在 5.0.7.Final 中修复
    【解决方案2】:

    以上答案对于 Maven 应用程序是正确的。但在普通应用程序中,您只需添加一个名为 jta-1.1.jar 的 jar 文件。

    -->如果您使用的是 3.x 版本,则可以在您下载的 hibernate 分发 jar 的名为 lib/required/jta-1.1.jar 的文件夹路径下找到。

    -->如果您使用的是hibernate 4.x 版本,则可以在名为dlist/lib/provided/jta-1.1.jar 的分发文件夹路径下找到

    【讨论】:

    • 在 Hibernate 4.3 中,它位于文件 jboss-transaction-api_xxx.jar
    • @Johanna 你在 Hibernate 5.1 中哪里可以找到这个 jar (jboss-transaction-api_xxx.jar)?或者任何其他 jar 在 5.1 版本中被替换为 jboss-transaction-api_xxx.jar?
    【解决方案3】:

    如果您不使用 Maven/Gradle,更简单的方法是下载整个包而不是一个一个下载 jar 文件。

    转到http://hibernate.org/orm/downloads/ 并下载最新的库,从required 文件夹中提取jar。

    【讨论】:

      【解决方案4】:

      您缺少路径:/lib/required 中的文件:“jboss-transaction-api_1.2_spec-1.1.1.Final”。这是hibernate的最终5.5.7版本

      【讨论】:

        猜你喜欢
        • 2018-03-12
        • 2016-03-19
        • 1970-01-01
        • 2015-08-30
        • 1970-01-01
        • 2021-06-19
        • 1970-01-01
        • 2010-11-14
        相关资源
        最近更新 更多