0

当我尝试实例化 Hibernate 并连接 MySQL 数据库时遇到问题(请参阅下面的错误消息)。

奇怪的是,在运行 Junit 测试时,使用完全相同的 hibernate.cfg.xml 文件连接工作正常,但从 Tomcat 运行时它拒绝工作......

我开始没有想法了。

任何线索或提示在哪里看?

引起:org.hibernate.HibernateException:无法在 org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:110) 在 org.hibernate.tuple 实例化默认元组 [org.hibernate.tuple.entity.DynamicMapEntityTuplizer] .entity.EntityTuplizerFactory.constructDefaultTuplizer(EntityTuplizerFactory.java:135) 在 org.hibernate.tuple.entity.EntityEntityModeToTuplizerMapping.(EntityEntityModeToTuplizerMapping.java:69) 在 org.hibernate.tuple.entity.EntityMetamodel.(EntityMetamodel.java:323) 在org.hibernate.persister.entity.AbstractEntityPersister.(AbstractEntityPersister.java:456) 在 org.hibernate.persister.entity.SingleTableEntityPersister.(SingleTableEntityPersister.java:131) 在 org.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:84) 在 org.hibernate.impl.SessionFactoryImpl.(SessionFactoryImpl.java:267) 在 org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1341) 在 se.fmt.atlantism.util.HibernateUtil.buildSessionFactory(HibernateUtil. java:16) ... 38 更多 原因:org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:107) 的 java.lang.NullPointerException ... 47 更多107) ... 47 更多107) ... 47 更多

4

5 回答 5

2

我写这篇文章是为了将来的 Google 员工和参考。

我做了更多的研究,问题的根源仍然未知。然而,下面的文章让我走上了正轨。

http://www.howtogeek.com/howto/linux/installing-tomcat-6-on-ubuntu/

似乎 Ubuntu(和 Debian)中可用的 Tomcat(至少 6 版)软件包无法正常工作。相反,我使用以下指南安装了 Tomcat:

http://www.ctrip.ufl.edu/tomcat6-debian-lenny-howto

虽然这可能不是安装的最佳选择,但似乎有必要让 Tomcat 版本 6 在 Ubuntu 和/或 Debian Lenny 上正常运行。

于 2010-01-28T09:13:57.553 回答
1

在我的例子中,这个错误是通过在我的 pom.xml 中切换 <dependency/> 顺序来解决的。当 hibernate (3.2.7.ga) 出现在 hibernate-annotations (3.4.0.GA) 之前时,会发生此错误。反过来,它工作正常。即使使用 scope=compile 也是如此。

我猜你需要调整你的类路径,除了(假设你已经在 WEB-INF/lib 中删除了两个 jar)它应该以正确的顺序进行 alpha-sort。但也许这会给某人一个关于如何前进的提示。

于 2010-03-29T07:30:17.403 回答
1

就我而言,这是一个简单的错误 - 配置文件 *.hbm.xml 具有映射对象没有的属性!我还听说过当您拼错 get/set 函数时会出现该错误的情况 - 与我的情况非常相似。

于 2010-03-29T19:13:37.460 回答
0

这是 Tomcat 守护进程的外观:

根 2605 0.0 0.0 16584 376 ?15:39 0:00
  /usr/bin/jsvc -user tomcat6
 -cp /usr/share/java/commons-daemon.jar:/usr/share/tomcat6/bin/bootstrap.jar
 -outfile SYSLOG -errfile SYSLOG -pidfile /var/run/tomcat6.pid
 -Djava.awt.headless=true -Xmx128M
 -Djava.endorsed.dirs=/usr/share/tomcat6/endorsed
 -Dcatalina.base=/var/lib/tomcat6 -Dcatalina.home=/usr/share/tomcat6
 -Djava.io.tmpdir=/tmp/tomcat6-temp -Djava.security.manager
 -Djava.security.policy=/var/lib/tomcat6/work/catalina.policy
 -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
 -Djava.util.logging.config.file=/var/lib/tomcat6/conf/logging.properties
 org.apache.catalina.startup.Bootstrap

这是使用 Sysdeo Tomcat 启动器插件在 Eclipse 中运行时 Tomcat 进程的外观:(
这个确实有效)

jzaruba 2655 19.7 4.5 358304 46152 ? 15:43 0:01
 /usr/lib/jvm/java-6-sun-1.6.0.15/bin/java
 -agentlib:jdwp=transport=dt_socket,suspend=y,地址=localhost:37377
 -Dcatalina.home=/usr/share/tomcat6
 -Djava.endorsed.dirs=/usr/share/tomcat6/endorsed
 -Dcatalina.base=/var/lib/tomcat6 -Djava.io.tmpdir=/var/lib/tomcat6/temp
 -Dfile.encoding=UTF-8 -classpath
 /usr/share/tomcat6/bin/bootstrap.jar:/usr/lib/jvm/java-6-sun-1.6.0.15/lib/tools.jar
 org.apache.catalina.startup.Bootstrap 启动

工作的(Eclipse 启动)是使用 java-6-sun-1.6.0.15 运行的,我是 Windows 用户,所以我不知道如何判断 /usr/lib/jsvc 使用哪个 JRE(虽然看一下),但我的猜测是它是一些 OpenJDK ......这可能是区别吗?

更新:jsvc 可能使用相同的 JRE Sysdeo Tomcat 启动器

于 2010-01-20T14:58:12.420 回答
0

我面临着同样的问题。在我下载“javassist.jar”并将其放入类路径后它就消失了:http ://www.java2s.com/Code/Jar/JKL/Downloadjavassistjar.htm

于 2010-04-19T08:40:03.637 回答