离线使用hibernate tool 生成反向工程,在配置 配置文件完,生成配置文件后,会报出org.hibernate.HibernateException: Could not parse configuration:错误

  原因:就是读取不到本地dtd约束,然后必须每次联网加载才行,具体原因不了解,因为网络这方面的解答都比较模糊,应该是小范围问题,感觉是jdk与tools要求版本不一致,导致部分插件未正常安装,解析出现问题

解决方式(同理可解决映射文件出现的解析不成的问题)

:  首先确认cfg.xml文件的格式内容的正确

        方式1. 连接网络!!!!!

(如果网络不好会出现解析不成功)

        方式2. 使用本地的dtd..(hibernate设计是首先读取本地,但可能是由于插件出现问题,读取不了本地,直接加载网络)

(快捷,提高效率)

<!DOCTYPE hibernate-configuration  SYSTEM

"classpath://org/hibernate/hibernate-configuration-3.0.dtd">

<!—这是最可取的替换方式-->

  (使用前,请确认是否将hibernate包导入)

------------------------------------------------------弄点废话

  之前测试时,电脑连着网络,在修改本地路径时,只是修改"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"这部分内容,只要联网其实怎么修改都不影响,因为前边还有个public id影响,还有不应该使用普通的路径格式,根据xml格式使用uri格式,因为xml分析器首先会以某种机制查找公共DTD的名称,查到了,则以此为标准,如果查不到,再到DTD位置上去找,所以还是只需要修改部分内容即可,但是需要路径写对,寻找本地的xml约束有多种方式。

  第一种在eclipse设置中,window/preferences/xml/xml catalog/ 设置下 找到-//Hibernate/Hibernate Configuration DTD 3.0//EN 点击,下方详情会出现其uri。。复制并替换xml的dtd即可

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-configuration PUBLIC

                                "-//Hibernate/Hibernate Configuration DTD 3.0//EN"

                                "file:/C:/Program Files/eclipse/../../xx/.eclipse/org.eclipse.platform_4.5.1_1709980481_win32_win32_x86_64/plugins/org.hibernate.eclipse.mapper_4.0.1.Final-v20150324-2307-B95/dtd/hibernate-configuration-3.0.dtd">

<!--这是通过xml设置中找到的,各个电脑的路径不同,要复制自己的路径,路径太长,不建议使用-->

  

  第二种,其实在hibernate-core-xx核心jar包里已经内置dtd文件了(配置文件和映射文件都有),在org/hibernate/包下,由于已经导包,所以也可以使用classpath路径

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-configuration PUBLIC

                                "-//Hibernate/Hibernate Configuration DTD 3.0//EN"

                                "classpath://org/hibernate/hibernate-configuration-3.0.dtd">

<!--这是使用classpath路径配置,适应各个机器,建议使用,但使用以下方式,解析会快捷一些-->

  

  虽然以上都能解决问题,但是建议使用直接本地约束的方式SYSTEM,不管有网没网直接读取本地约束,这样速度要快的多

<!DOCTYPE hibernate-configuration  SYSTEM

                                "file:/C:/Program Files/eclipse/../../xx/.eclipse/org.eclipse.platform_4.5.1_1709980481_win32_win32_x86_64/plugins/org.hibernate.eclipse.mapper_4.0.1.Final-v20150324-2307-B95/dtd/hibernate-configuration-3.0.dtd">

<!--这是通过xml设置中找到的,路径长不建议使用-->

<!DOCTYPE hibernate-configuration  SYSTEM

"classpath://org/hibernate/hibernate-configuration-3.0.dtd">

<!--classpath配置-,路径短,适应不同机器,速度快,建议使用此配置->

  

  

(同理如果映射文件出现问题也可以采取此方式)

<!DOCTYPE hibernate-mapping SYSTEM

"classpath://org/hibernate/hibernate-mapping-3.0.dtd">

  

有关dtd的知识(主要是两种引用方式)

定义外部DTD的语法:

<!DOCTYPE  根元素名 SYSTEM "外部DTD文件的URI">(SYSTEM表示DTD文件是私有的。引号不能少)

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<?xml-stylesheet href="simple1.css" type="text/css" ?>

<!-- 外部DTD -->

<!DOCTYPE poem SYSTEM "poem.dtd">

<poem>

<title>静夜思</title>

<author>李白</author>

<line>床前明月光,</line>

<line>疑事地上霜.</line>

<line>举头望明月,</line>

<line>低头思故乡.</line>

<commet>李白是中国最伟大的诗人!</commet>

</poem>

-----------------------------相同目录下的poem.dtd内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<!ELEMENT poem (title,author,line+,commet)>

<!ELEMENT title (#PCDATA)>

<!ELEMENT author (#PCDATA)>

<!ELEMENT line (#PCDATA)>

<!ELEMENT commet  (#PCDATA)>

如果想引用一个公共的DTD文档,又该如何呢?

<!DOCTYPE  根元素名 PUBLIC "DTD的名称" "外部DTD文件的URI">(PUBLIC表示DTD文件是公共的,注意在PUBLIC之后,还多了一个DTD的名称。引号不能少)

下面是taglib的DTD:

<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"

"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">

分析一下这个外部DTD声明:

1、关键字DOCTYPE,PUBLIC。

2、根元素名:taglib。所以每一个标签库定义文件都是以taglib为根元素的,否则就不会验证通过。

3、紫色的字"-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN",这是公共DTD的名称。这个东西命名是有些讲究的。首先它是以"-"开头的,表示这个DTD不是一个标准组织制定的。(如果是ISO标准化组织批准的,以“ISO”开头,如果不是ISO的标准化组织批准的,以“+”开头。)。接着就是双斜杠“//”,跟着的是DTD所有者的名字,很明显这个DTD是sun公司定的。接着又是双斜杠“//”,然后跟着的是DTD描述的文档类型,可以看出这份DTD描述的是jsp 标签库1.2版本的格式。再跟着的就是“//”和ISO 639语言标识符。

4、绿色的字"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd",表示这个DTD的位置。

疑问:是不是xml分析器都会到java.sun.com上去找这个dtd呢?答案是否定的,xml分析器首先会以某种机制查找公共DTD的名称,查到了,则以此为标准,如果查不到,再到DTD位置上去找。

 

有关uri url方面的知识

URI:Uniform Resource Identifier,统一资源标识符;

URL:Uniform Resource Locator,统一资源定位符;

URN:Uniform Resource Name,统一资源名称。

其中,URL,URN是URI的子集。

Web上地址的基本形式是URI,它代表统一资源标识符。有两种形式:

URL:目前URI的最普遍形式就是无处不在的URL或统一资源定位器。

URN:URL的一种更新形式,统一资源名称(URN, Uniform Resource Name)不依赖于位置,并且有可能减少失效连接的个数。但是其流行还需假以时日,因为它需要更精密软件的支持。

URI是以某种统一的(标准化的)方式标识资源的简单字符串。

URI一般由三部分组成:

1. 访问资源的命名机制。

2. 存放资源的主机名。

3. 资源自身的名称,由路径表示。

典型情况下,这种字符串以scheme(命名URI的名字空间的标识符——一组相关的名称)开头,语法如下:

[scheme:] scheme-specific-part

URI以scheme和冒号开头。Scheme用大写/小写字母开头,后面为空或者跟着更多的大写/小写字母、数字、加号、减号和点号。冒号把 scheme与scheme-specific-part分开了,并且scheme-specific-part的语法和语义(意思)由URI的名字空间 决定。如下面的例子:

http://www.cnn.com,其中http是scheme,//www.cnn.com是 scheme-specific-part,并且它的scheme与scheme-specific-part被冒号分开了。

URI有绝对和相对之分,绝对的URI指以scheme(后面跟着冒号)开头的URI。前面提到的http://www.cnn.com就是绝对的URI 的一个例子,其它的例子还有mailto:jeff@javajeff.com、news:comp.lang.java.help和xyz: //whatever。你可以把绝对的URI看作是以某种方式引用某种资源,而这种方式对标识符出现的环境没有依赖。如果使用文件系统作类比,绝对的 URI类似于从根目录开始的某个文件的径。

与绝对的URI不同的,相对的URI不是以scheme(后面跟着冒号)开始的URI。 它的一个例子是articles/articles.html。你可以把相对的URI看作是以某种方式引用某种资源,而这种方式依赖于标识符出现的环境。 如果用文件系统作类比,相对的URI类似于从当前目录开始的文件路径。

URL是Uniform Resource Location的缩写,译为"统一资源定位符"。通俗地说,URL是Internet上用来描述信息资源的字符串,主要用在各种WWW客户程序和服务器 程序上,特别是著名的Mosaic。采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。

URL的格式由下列三部分组成:

第一部分是协议(或称为服务方式);

第二部分是存有该资源的主机IP地址(有时也包括端口号);

第三部分是主机资源的具体地址。,如目录和文件名等。

第一部分和第二部分之间用"://"符号隔开,第二部分和第三部分用"/"符号隔开。第一部分和第二部分是不可缺少的,第三部分有时可以省略。

目前最大的缺点是当信息资源的存放地点发生变化时,必须对URL作相应的改变。因此人们正在研究新的信息资源表示方法,例如:URI(Universal Resource Identifier)即"通用资源标识"(参见RFC 1630)、URN(Uniform Resource Name)即"统一资源名"和URC(Uniform Resource Citation)即"统一资源引用符"等。

URI目前还处在进一步的研究当中。研究的方向就是弥补URL目前存在的缺点。

参考资料

http://www.blogjava.net/flysky19/articles/93379.html

http://my.oschina.net/aiguozhe/blog/40592

http://stackoverflow.com/questions/4301294/cant-parse-hibernate-cfg-xml-while-offline

解决离线Could not parse configuration:hibernate.cfg.xml错误的更多相关文章

  1. org.hibernate.HibernateException: Could not parse configuration: /hibernate.cfg.xml

    org.hibernate.HibernateException: Could not parse configuration: /hibernate.cfg.xml at org.hibernate ...

  2. 关于Could not parse configuration: /hibernate.cfg.xml的问题

    第一次在eclipse上配置hibernate,问题百出啊,比如下面的org.hibernate.HibernateException: Could not parse configuration: ...

  3. Could not parse configuration: /hibernate.cfg.xml

    hibernate需要联网验证dtd,错误原因:未联网或网速不行

  4. org.hibernate.HibernateException: Could not parse configuration: /hibernate.cfg.xm

    org.hibernate.HibernateException: Could not parse configuration: /hibernate.cfg.xm 检查jar包是否正确以及配置的xm ...

  5. [原创]java WEB学习笔记77:Hibernate学习之路---Hibernate 版本 helloword 与 解析,.环境搭建,hibernate.cfg.xml文件及参数说明,持久化类,对象-关系映射文件.hbm.xml,Hibernate API (Configuration 类,SessionFactory 接口,Session 接口,Transaction(事务))

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  6. 问题Initial SessionFactory creation failed.org.hibernate.HibernateException: /hibernate.cfg.xml not found解决方法

    问题Initial SessionFactory creation failed.org.hibernate.HibernateException: /hibernate.cfg.xml not fo ...

  7. hibernate.cfg.xml 配置(摘录)

    配置文件中映射元素详解 对象关系的映射是用一个XML文档来说明的.映射文档可以使用工具来生成,如XDoclet,Middlegen和AndroMDA等.下面从一个映射的例子开始讲解映射元素,映射文件的 ...

  8. Unable to perform unmarshalling at line number 16 and column 63 in RESOURCE hibernate.cfg.xml. Message: cvc-elt.1: 找不到元素 'hibernate-configuration' 的声明。

    七月 02, 2017 4:32:37 下午 org.hibernate.Version logVersionINFO: HHH000412: Hibernate Core {5.2.10.Final ...

  9. spring applicationContext.xml和hibernate.cfg.xml设置

    applicationContext.xml配置 <?xml version="1.0" encoding="UTF-8"?> <beans ...

随机推荐

  1. 21.Spring Boot 使用Java代码创建Bean并注册到Spring中

    转自:https://blog.csdn.net/catoop/article/details/50558333

  2. git仓库搭建

    第一步安装git [root@Centos-node2 ~]# yum -y install git 第二步创建git用户 [root@Centos-node2 ~]# useradd git [ro ...

  3. FreeMarker template error: The following has evaluated to null or missing

    使用freemarker前端分页,报错: FreeMarker template error: The following has evaluated to null or missing 后端直接赋 ...

  4. jquery验证篇

    jquery验证:验证不了(包括easy ui 插件引用的js) jquery easy ui 引用的js <span style="color:#000000;">& ...

  5. uvaoj-1595:symmetry

    1595 - Symmetry The figure shown on the left is left-right symmetric as it is possible to fold the s ...

  6. Python 实用第三方库

    1. youtube 视频下载 使用:you-get pip install you-get you-get 'https://www.youtube.com/watch?v=jNQXAC9IVRw'

  7. Linux CentOS PhpMyAdmin安装--转载

    原文地址:https://www.centos.bz/2011/04/linux-centos-phpmyadmin-install/ 安装好PHP,Apache和MySQL程序后,为了管理MySQL ...

  8. vue 图片lazyload

    今天看到我一醉哥的一篇朋友圈分享:<不如我们从头来过 | 掘金> 看完之后,百感交集,互联网的浪潮使创业公司如雨后春笋般崛起, 每一个初创公司都会有一群怀着美好愿景的小伙伴, 但是当寒冬来 ...

  9. Codeforces Round #234 (Div. 2):B. Inna and New Matrix of Candies

    B. Inna and New Matrix of Candies time limit per test 1 second memory limit per test 256 megabytes i ...

  10. js循环函数中的匿名函数和闭包问题(匿名函数要用循环中变量的问题)

    js循环函数中的匿名函数和闭包问题(匿名函数要用循环中变量的问题) 一.总结 需要好好看下面代码 本质是因为匿名函数用到了循环中的变量,而普通方式访问的话,匿名函数的访问在循环之后,所以得到的i是循环 ...