Hibernate在EntityTuplizerFactory.constructTuplizer中失败并出现NullPointerException? 为什么?

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

奇怪的是,在运行Junit测试时,使用完全相同的hibernate.cfg.xml文件可以很好地连接,但是当从Tomcat运行时它拒绝工作…

我开始没有想法了。

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

引起:org.hibernate.HibernateException:无法在org.hibernate.tuple的org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:110)中实例化默认tuplizer [org.hibernate.tuple.entity.DynamicMapEntityTuplizer]位于org.hibernate.tuple.entity.EntityEntityModeToTuplizerMapping。(EntityEntityModeToTuplizerMapping.java:69)的.entity.EntityTuplizerFactory.constructDefaultTuplizer(EntityTuplizerFactory.java:135)位于org.hibernate.tuple.entity.EntityMetamodel。(EntityMetamodel.java:323)at at org.hibernate.persister.entity.AbstractEntityPersister。(AbstractEntityPersister.java:456)org.hibernate.persister.ntister.Teartister.Persister.PeristerFactory.javister(PersisterFactory.java)中的org.hibernate.persister.entity.SingleTableEntityPersister。(SingleTableEntityPersister.java:131) 84)atg.hibernate.impl.SessionFactoryImpl。(SessionFactoryImpl.java:267)atg.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1341)at se.fmt.atlantism.util.HibernateUt il.buildSessionFactory(HibernateUtil.java:16)… 38更多引起:org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:107)的java.lang.NullPointerException … 47更多

我正在为未来的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

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

就我而言,通过在我的pom.xml中切换命令来解决此错误。 当hibernate(3.2.7.ga)出现在hibernate-annotations(3.4.0.GA)之前时会发生此错误。 反过来说,它运作正常。 即使使用scope = compile也是如此。

我猜你需要调整你的类路径,除了(假设你已经丢弃了WEB-INF / lib中的两个jar)它应该按照正确的顺序排序。 但也许这会让某人暗示如何前进。

在我的情况下,这是一个简单的错误 – 配置文件* .hbm.xml有一个映射对象没有的属性! 当你拼错一个get / set函数时,我也听说过这个错误的情况 – 非常类似于我的情况。

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

这是Tomcat守护程序进程的外观:

根2605 0.0 0.0 16584 376?  Ss 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 /共享/ tomcat6中/认可
  -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中/工作/ 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?  Sl 15:43 0:01
  /usr/lib/jvm/java-6-sun-1.6.0.15/bin/java
  -agentlib:JDWP =运输= dt_socket,暂停= Y,地址=本地主机:37377
  -Dcatalina.home =的/ usr /共享/ tomcat6中
  -Djava.endorsed.dirs =的/ usr /共享/ tomcat6中/认可
  -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用户所以我不知道如何判断哪个JRE用于/ usr / lib / jsvc(虽然看着它),但我的猜测是它是一些OpenJDK ……这可能是区别吗?

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