如果我尝试通过以下代码在Java applet中创建一个新的xml文档:
http://java.sun.com/j2se/1.4.2/docs/api/javax/xml/parsers/DocumentBuilderFactory.html#newInstance()
DocumentBuilderFactory.newInstance();
我会收到此错误:
Java Plug-in 1.6.0_19
Using JRE version 1.6.0_19-b04 Java HotSpot(TM) Client VM
javax.xml.parsers.FactoryConfigurationError: Provider <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> not found
at javax.xml.parsers.DocumentBuilderFactory.newInstance(Unknown Source)
我不关心DTD。
附上的html文档如下所示:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Loading...</title>
</head>
问题在于实体解析器,它指向 w3c.org网站。访问参考DTD 此网站已被限制用于应用程序。该 解决方案是实现我自己的实体解析器。
相关:
答案 0 :(得分:1)
如果您所做的只是调用DocumentBuilderFactory.newInstance();
,那么这不应该导致错误。您链接的帖子不相关。
javax.xml.parsers.FactoryConfigurationError: Provider <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> not found
这表明一些奇怪的配置错误/错误。提供者应该(我认为)是JAXP实现的工厂类名。检查您是否做了一些奇怪的事情,比如设置javax.xml.parsers.DocumentBuilderFactory
系统属性或者在Applet类路径上有一个无效的META-INF/services/javax.xml.parsers.DocumentBuilderFactory
文件。