[英]SAXParser gives FileNotFoundException for XML file
我的 Java 应用程序在尝试使用 SAXParser class 解析 XML 文件时给出了 FileNotFoundException。堆栈跟踪是:
java.base/java.io.FileInputStream.open0(Native Method),
java.base/java.io.FileInputStream.open(Unknown Source),
java.base/java.io.FileInputStream.<init>(Unknown Source),
java.base/java.io.FileInputStream.<init>(Unknown Source),
java.base/sun.net.www.protocol.file.FileURLConnection.connect(Unknown Source),
java.base/sun.net.www.protocol.file.FileURLConnection.getInputStream(Unknown Source),
java.xml/com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(Unknown Source),
java.xml/com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(Unknown Source),
java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source),
java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source),
java.xml/com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source),
java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source),
java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source),
java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(Unknown Source),
java.xml/javax.xml.parsers.SAXParser.parse(Unknown Source)
我在 Windows 和 Linux 上运行应用程序,在 Linux 上我可以更频繁地重现它(我不知道为什么......)。 该问题似乎是随机发生的,我确定该文件存在并且可以读取。
IMPLEMENTOR="Eclipse Adoptium"
IMPLEMENTOR_VERSION="Temurin-17.0.2+8"
JAVA_VERSION="17.0.2"
JAVA_VERSION_DATE="2022-01-18"
此链接表明这可能是与权限相关的问题: https://community.cloudera.com/t5/Support-Questions/CDF-Add-NiFi-CA-Service-Service-to-Cluster/mp/268975/highlight/真的
但这对我不起作用。
编辑:我在这里粘贴了 XML 文件内容: https://pastebin.com/Q0WE9Y9S
编辑:我已经配置了 SAXParserFactory,因此它不会加载外部 DTD:
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
factory.setValidating(false);
factory.setNamespaceAware(false);
factory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
我已经解决了这个问题,这是由于我自己的代码中的另一个错误。 所以它与 SAXParser 无关。 感谢您的帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.