我的项目中大约有75个.hbm.xml文件。 在75个文件中,有4个文件正在使用
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
和其他71个文件正在使用
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
该项目运行良好。但是昨天,当我重新启动服务器时,我发现它没有启动并抛出此异常。
org.xml.sax.SAXParseException; lineNumber: 4; columnNumber: 20;
Element type "hibernate-mapping" must be declared
我用Google搜索了一下,发现4个文件有问题的解决方案。 我在这4个.hbm.xml文件中更改了此代码
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
此代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
服务器启动并运行。
我在本地,分期和同时居住时遇到了这个问题。
我找不到原因,为什么发生这种情况,因为它早先在起作用,为什么突然所有机器停止工作?
休眠团队在结束时是否进行了任何修改?
我必须就这个问题回答我的上级,但是没有适当的答案。
I am using java7, spring-core-3.0.0, spring-2.5 and spring-hibernate2 jars.
答案 0 :(得分:2)
在映射中,我替换为:
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"classpath://org/hibernate/hibernate-mapping-3.0.dtd">
在配置中,我替换为:
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
"classpath://org/hibernate/hibernate-configuration-3.0.dtd">
http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd是一个不错的网址,但从昨天开始就非常不稳定:'(
到https://hibernate.org的“重定向301”似乎导致了此问题。而且在XML中直接使用https也不起作用。
请注意,旧的tomcat(6或更早版本)无法识别协议“ classpath://”。
答案 1 :(得分:0)
将包含“ http”的网址替换为“ classpath”,文件将起作用。