`
weatry
  • 浏览: 10116 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MyEclipse 10.7生成Hibernate 4.1时的一个BUG

阅读更多
因为工作需要,研究了一下Hibernate 4,在使用MyEclise 10.7自动生成代码时,程序始终报错如下:
org.hibernate.InvalidMappingException: Unable to read XML
at org.hibernate.internal.util.xml.MappingReader.readMappingDocument(MappingReader.java:109)
at org.hibernate.cfg.Configuration.add(Configuration.java:478)
at org.hibernate.cfg.Configuration.add(Configuration.java:474)
at org.hibernate.cfg.Configuration.add(Configuration.java:647)
at org.hibernate.cfg.Configuration.addResource(Configuration.java:730)
at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:2109)
at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:2081)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2061)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2014)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1929)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1908)
at HibernateSessionFactory.rebuildSessionFactory(HibernateSessionFactory.java:69)
at HibernateSessionFactory.getSession(HibernateSessionFactory.java:53)
at BaseHibernateDAO.getSession(BaseHibernateDAO.java:13)
at SaleVolumeDAO.save(SaleVolumeDAO.java:28)
at Demo.main(Demo.java:16)
Caused by: org.dom4j.DocumentException: Connection timed out: connect Nested exception: Connection timed out: connect
at org.dom4j.io.SAXReader.read(SAXReader.java:484)
at org.hibernate.internal.util.xml.MappingReader.readMappingDocument(MappingReader.java:78)
... 15 more

因为在最后一行看到了Connection timed out,我就想当然地认为是连接数据库出现了问题,于是检查了jdbc url的配置,并且重启了数据库,还是没能解决问题。
经过近2个小时的折腾,我终于注意到在Connection timed out前面的Caused by: org.dom4j.DocumentException。这说明连接超时并不是由数据库引起的,而是由DOM4J解析XML时导致的。DOM4J在解析XML时,惟一可能连接网络的情况就是在DOCTYPE中声明的那个网址。于是我检查了,DOCTYPE,发现在hbm文件中的DOCTYPE是这样写的:

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd ">
注意,在http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd后面有一个空格。我去除了这个空格,重新运行,问题解决了。

这里普及一下DOCTYPE格式的含义。DOCTYPE主要是在解析XML时,指定DTD文档的。DTD文件在xml中可以以两种形式给出:
<!DOCTYPE xml文档根元素的名称 (SYSTEM | PUBLIC)[DTD的名称] "外部文件DTD的uri">
<!DOCTYPE xml文档根元素的名称 [
    <!ELEMENT xml文档根元素的名称(#PCDATA)>
]>
其中外部DTD申明的时候可以用SYSTEM关键字或者PUBLIC关键字,一个表示是私有的DTD文件,一个表示公开的DTD文件.在使用PUBLIC的时候就必须给出一个DTD的名称,这个名称被称为公共标识符,多数xml处理程序会按照这个公共标识符在本地检索这个DTD,如果找不到则按照URI去引用这个DTD.其中uri地址可以是相对URI或者绝对URI。
公共DTD的名称要遵循一些约定.如果是ISO标准,那么要以ISO开头,如果是非ISO的标准组织要以+号开头,如果不是标准组织要以-号开头.然后紧跟一个//加上DTD所有者的名字//加上DTD描述的文档类型,再加上//和ISO 639语言标识符。

所以,按说DOM4J应该可以通过公共标识符识别出DTD来,而不用去连接网络。我没有看DOM4J的源代码,但估计它可能是对个整个DOCTYPE都验证了一下,结果发现和标准的不一致,就去连接网络了,结果网址又是错误的,就出错了。

就这么一个空格,浪费了我两个多小时的时间。
分享到:
评论

相关推荐

    myeclipse 10.7汉化包

    MyEclipse 10.7汉化包是一个专为MyEclipse 10.7版本设计的语言转换工具,旨在帮助用户将原本英文界面的操作环境转化为中文,以方便中国用户更流畅地使用这款强大的集成开发环境(IDE)。MyEclipse是基于Eclipse平台...

    MyEclipse10.7由表自动生成Hibernate实体对象

    在使用MyEclipse 10.7开发JavaWeb项目时,开发者可以通过内置的MyEclipse Database Explorer工具,利用Hibernate反向工程功能,从数据库表自动生成对应的Hibernate实体类。这一过程极大地简化了数据库操作与Java对象...

    MyEclipse10.7反编译工具

    3. **JadClipse 插件**:JadClipse 是一个用于反编译 Java 字节码文件(.class 文件)的插件,可以方便地集成到 MyEclipse 中。 4. **Jad 工具**:Jad 是一个命令行工具,用于反编译 .class 文件,是 JadClipse 的...

    绝对可以激活Myeclipse10.7

    激活Myeclipse10.7亲测绝对可用激活Myeclipse10.7

    MyEclipse10.7的git文件

    【MyEclipse10.7的Git文件】与【myeclipse10.7 git 文件】这两个描述都指向了在MyEclipse 10.7版本中使用Git进行版本控制的相关内容。Git是一款分布式版本控制系统,它使得开发者可以追踪代码的变更历史,协同合作...

    myeclipse10.7中的jar包

    标题 "myeclipse10.7中的jar包" 指的是从MyEclipse 10.7版本中提取的一系列Java档案(JAR)文件,这些文件通常包含类库和资源,是软件开发中不可或缺的部分。MyEclipse是集成开发环境(IDE),尤其适合Java EE应用...

    Myeclipse自动生成Hibernate配置文件及实体类映射ORM

    Myeclipse 是一个功能强大的集成开发环境(IDE),它提供了许多实用的功能来简化软件开发过程。在这个示例中,我们将展示如何使用 Myeclipse 自动生成 Hibernate 配置文件及实体类映射 ORM 配置文件。 第一步骤:...

    myeclipse10.7破解版

    myeclipse10.7破解版

    Myeclipse10.7破解工具

    Myeclipse10.7破解工具 非常的好用

    MyEclipse 10.7完美汉化补丁和破解工具和详细教程

    1.MyEclipse 10.7的完美汉化补丁 破解教程2.MyEclipse 10.7的破解工具和详细

    Myeclipse10.7完美破解工具

    Myeclipse10.7的完美破解工具..另外解决了破解后无法导出war包的问题,附带破解教程,本人亲测可用,欢迎下载!

    myeclipse自动生成hibernate映射文件

    myeclipse自动生成hibernate映射文件

    myeclipse.10.7_crack注册机

    很好用的注册机,注意看使用说明,和10.6注册方法一样

    myeclipse 10.7破解步骤及破解文件-验证10.7 blun能破解

    晚上流传的方法总是不成功,经过反复实验,终于能够破解 myeclipse 10.7了,不容易啊,特意上传供大家免费下载

    myeclipse10.7破解工具,支持10.7版本

    附上版本下载地址,内有所有版本下载地址,包括sping版本。...http://downloads.myeclipseide.com/downloads/products/eworkbench/indigo/installers/myeclipse-10.7-offline-installer-windows.exe

    用myeclipse自动生成hibernate配置文件

    通过以上步骤,利用MyEclipse的自动生成功能,我们可以快速地搭建起一个基于Hibernate的Java Web项目,大大提高了开发效率。同时,这也为我们提供了学习和理解Hibernate配置文件、Java Bean类和映射文件结构的机会。

    MyEclipse10.7破解文件+步骤说明

    本文件是针对MyEclipse 10.x 的破解,亲测以后,对MyEclipse10.7 10.6均可破解!而且步骤说明为图文PDF版!!!定能助你轻松搞定!!!

    MyEclipse10.7 破解文件+破解说明

    MyEclipse10.7 破解文件+破解说明 网上很多破解软件使用后导致me无法启动十分坑!!传上自己找了很久的包,希望大家不会再绕弯路破解!

    MyEclipse10.7破解补丁

    支持MyEclipse10.7版本破解。

    myeclipse10.7 破解版+破解文件

    myeclipse10.7 破解版+破解文件 亲测有用,正在用,安装包+破解包+破解pdf指导

Global site tag (gtag.js) - Google Analytics