我正在尝试使Hibernate 4.3与我的MySQL数据库一起使用。我已经可以在Eclipse中使用Hibernate代码生成工具,也可以使用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&useUnicode=true&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>
我无法弄清楚错误可能在哪里。欢迎所有帮助。谢谢。
您缺少 与maven的jta.jar 并添加以下内容:
<dependency> <groupId>javax.transaction</groupId> <artifactId>jta</artifactId> <version>1.1</version> </dependency>
或从maven存储库下载并添加到您的CLASSPATH中