浏览 4091 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2004-04-07
new SchemaExport(conf).create(true, true); SessionFactory sessionFactory = conf.buildSessionFactory(); 上面的代码1,2行全部通过,数据库中表也建立了,但第三句在页面上抛出异常: java.lang.ClassCastException net.sf.cglib.reflect.FastClass$Generator.create(FastClass.java:92) net.sf.cglib.reflect.FastClass.create(FastClass.java:74) net.sf.hibernate.persister.AbstractEntityPersister.(AbstractEntityPersister.java:757) net.sf.hibernate.persister.EntityPersister.(EntityPersister.java:715) net.sf.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:41) net.sf.hibernate.impl.SessionFactoryImpl.(SessionFactoryImpl.java:137) net.sf.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:750) TestServlet.doGet(TestServlet.java:72) javax.servlet.http.HttpServlet.service(HttpServlet.java:743) javax.servlet.http.HttpServlet.service(HttpServlet.java:856) 谁能指点一二? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2004-04-08
hibernate2.x后必须使用cglib2.0! 以前老板本的cglib相关的东西必须从classpath中移去,包括ASM的东西好像叫asm.jar
|
|
返回顶楼 | |
发表时间:2004-04-08
我下午到sourceforge.net上下载了cglib的最新版本,然后删除老用上新的,但结果还是同样的错误.我感到我已实在没有办法解决了,谁能给一个TOMCAT下的实例?给我点信心.
随便说一句,这样的情况只是在tomcat(我只试了TOMCAT)上遇到,如果以应用程序的方式则能正常运行 |
|
返回顶楼 | |
发表时间:2004-04-08
我猜测你的问题在于CLASSPATH,也就是说你的JSP其实并没有找到你的hibernate.cfg.xml。
在一个Web容器中,CLASSPATH和应用程序环境是不完全相同的,你的代码在应用程序环境能够跑通不意味着在Web容器中仍然可以跑通。 this.getClass();.getResource("hibernate.cfg.xml");); 用Class对象去load资源的时候,默认情况下是从程序本身当前目录开始寻找资源文件的,如果运行你这行代码的程序和hibernate.cfg.xml不在同一个目录下,就肯定会找不到的。 TestServlet.doGet(TestServlet.java:72); 但是通过Class对象去load资源有个不太好的地方,就是如果资源文件找不到,是不会报异常的,会继续执行下去,所以到下面用到该对象的地方,而该对象又没有被创建,往往就会报NullPointerException。这往往让程序员找不到真正出错的原因。 向你这种情况,我其实很不理解你为什么要采用这种资源加载方式的,你可以试试看这样来做: conf.configure();; 或者 conf.configure("/hibernate.cfg.xml");; 或者 conf.configure(this.getClass();.getResource("/hibernate.cfg.xml"););; 这样ClassLoader就知道应该从CLASSPATH的根开始找,也就是从WEB-INF/classes下面找起,而不是在你的TestServlet.class同级目录下面寻找。 |
|
返回顶楼 | |
发表时间:2004-04-09
经过坚持不懈的努力,问题终于解决了,原来hibernate自带的CGLIB包不对,我到sourceforge.net下载了cglib-full-2.0.jar就通过了,甚至于cglib-2.0.jar都不行,有某些类找不到,唉,真是整死人了.
说实在的,我都不敢肯定,明天我到另一台机器会不会出现其它的莫名其妙的问题,悲哀! |
|
返回顶楼 | |
发表时间:2004-04-09
不过我真的不明白,人家为什么能通过呢?
|
|
返回顶楼 | |