为什么hibernate.sourceforge.net嵌套异常:hibernate.sourceforge.net发生?

时间:2013-11-15 06:24:49

标签: hibernate dtd

org.dom4j.DocumentException: hibernate.sourceforge.net Nested exception: hibernate.sourceforge.net

java.net.UnknownHostException: hibernate.sourceforge.net

我在hibernate中显示上面显示的这些错误,当互联网打开时,它会正常工作。如果没有互联网,它将显示上述错误。

请事先帮助我。

请简要说明。

2 个答案:

答案 0 :(得分:0)

您的某个XML文件中的DOCTYPE定义似乎是指hibernate.sourceforge.net上的DTD。

现在DTD已存在,但如果无法访问互联网,您的应用程序将无法访问它。

您可以尝试将DTD复制到本地,并将XML文件的标题更改为:

<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

这样的事情:

<!DOCTYPE hibernate-configuration SYSTEM "hibernate-configuration.dtd">  

其中“hibernate-configuration.dtd”指向文件系统或jar文件中的本地资源。

克服这个问题最肮脏的伎俩是完全删除DTD声明:

<!DOCTYPE hibernate-configuration>

这也是一个有效的doctype,但它唯一能做的就是将文档中根元素的名称限制为“hibernate-configuration”。在那之后它是野生的。

答案 1 :(得分:0)

从此处http://hibernate.org/dtd/hibernate-configuration-3.0.dtd

下载DTD文件

然后将此hibernate-configuration-3.0.dtd文件添加到jar中。对于基于maven的项目,将该文件添加到/ src / main / resources文件夹中。

现在在hibernate.cfg.xml添加以下DTD声明

<!DOCTYPE hibernate-configuration SYSTEM "classpath://hibernate-configuration-3.0.dtd">

现在没有互联网连接,您的应用就可以使用了。