在开发中使用到了dom4j去解析一个xml格式的文件,代码中使用到了SAXReader进行转换。
在本机电脑测试运行时,没有任何问题,当放在服务器时,报错:
java.net.UnknownHostException:java.sun.com问题代码:
SAXReader reader = new SAXReader(); Document doc = reader.read(f); //获取根节点 properties Element root = doc.getRootElement();原因: 1、根本原因:
因为SAXReader需要下载外部的dtd文件对xml验证
2、项目原因:因为部署的服务器不能联网
解决办法:(两种解决思路,建议使用第二种)1、去掉xml文件中的doctype或者将doctype中指定的互联网dtd文件改为引用本地dtd文件。
doctype的在xml文件中开头位置,如下:
*根据实际情况进行修改,此处未修改 *
但是这种办法会需要修改xml文件,大部分实际项目这种做法并不允许
2、对dom4j的SAXReader进行设置,不去下载外部dtd文件来对xml进行验证
SAXReader reader = new SAXReader();
//以下两行代码,是对dom4j的SAXReader进行设置,不去下载外部dtd文件来对xml进行验证
//SAXReader需要下载外部的dtd文件对xml验证,当服务器不能链接外网时,会报错
//这里将验证关闭
reader.setValidation(false);
reader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
Document doc = reader.read(f);
//获取根节点 properties
Element root = doc.getRootElement();
参考文章:
https://blog.csdn.net/youlianying/article/details/5908335
https://www.iteye.com/blog/pengfeng-819827



