java - 为什么我的 SaxParser 在解析本地文件时会抛出 ConnectException?

标签 java xml sax

我正在尝试使用 Java 中的 SaxParser 来通过自定义 ContentHandler 解析本地 xml 文件。为什么以下代码会抛出 java.net.ConnectException? :

try{
    File xmlDocument = new File("/data/testdoc.xml");
    SAXParserFactory factory = SAXParserFactory.newInstance();
    SAXParser saxParser = factory.newSAXParser();
    saxParser.parse(xmlDocument, new IssueContentHandler(issue));
} catch (IOException | SAXException | ParserConfigurationException e) {
    e.printStackTrace();
}

提供的文件路径有效。我的操作系统是 CentOs,openjdk 版本为“1.8.0_151”。

异常(exception):

java.net.ConnectException: Die Wartezeit für die Verbindung ist abgelaufen (Connection timed out)
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at java.net.Socket.connect(Socket.java:538)
at sun.net.NetworkClient.doConnect(NetworkClient.java:180)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:463)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:558)
at sun.net.www.http.HttpClient.<init>(HttpClient.java:242)
at sun.net.www.http.HttpClient.New(HttpClient.java:339)
at sun.net.www.http.HttpClient.New(HttpClient.java:357)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1220)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1156)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1050)
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:984)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1564)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:647)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:1304)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDTDEntity(XMLEntityManager.java:1270)
at com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.setInputSource(XMLDTDScannerImpl.java:264)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.dispatch(XMLDocumentScannerImpl.java:1161)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.next(XMLDocumentScannerImpl.java:1045)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:959)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:602)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:505)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:841)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:770)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:327)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:328)
at de.anonymized.IssueUploadHandler.run(IssueUploadHandler.java:144)
at java.lang.Thread.run(Thread.java:748)

最佳答案

您的解析器正在尝试验证文档 DTD 架构。

要停止解析器验证,请添加以下行:factory.setValidating(false);

HTH

关于java - 为什么我的 SaxParser 在解析本地文件时会抛出 ConnectException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48824195/

相关文章:

java - CachedRowSet 上的左外连接

java - 此 UML 关联是否正确匹配代码?

android - 单个单选组中水平和垂直方向的单选按钮

Java SAX 无法正确解析

java - 使按钮不可调整大小

android - 圆形进度条大小对齐

xml - 如何使用 Django 将本地 JSON 对象加载到 D3.js 前端?

java - 从文档中间重新启动 SAX 解析器

java - 如何使用Java中的SAX解析器检查xml标签是否具有属性?

java - 使用 for-each 循环和 Map.Entry() 删除 LinkedHashMap 实例中等于字符串 "world"的任何键值,但总是出错