16 Create the DTD file or configure an XML catalog for this DTD
解决eclipse 代码报错
问题描述
我用eclipse打开书上的随书源码时,log4j.xml文件的<!DOCTYPE>这行代码有错误:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration
xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender
name="STDOUT"
class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param
name="ConversionPattern"
value="%5p [%t] %m%n"/>
</layout>
</appender>
<logger name="mapper.EmployeeMapper">
<level value="DEBUG"/>
</logger>
<root>
<level value="ERROR"/>
<appender-ref ref="STDOUT"/>
</root>
</log4j:configuration>
错误提示信息如下:
1 | Cannot find DTD 'file:///E:/workspace_web2/MyDynamicSQLTest/src/log4j.dtd'. |

解决方案1
创建一个log4j2.xml文件,然后复制里面的!DOCTYPE元素,替换log4j.xml文件中的!DOCTYPE元素。
通过DTD file创建log4j2.xml文件
在src目录上右键,然后选择New,Others...
Wizards搜索框中输入xml,然后选择XML File,接着点击Next
输入文件名log4j2.xml,点击Next
选择Create XML file from a DTD file,点击Next
选择Select XML Catalog entry,然后选择-//LOG4J//DTD LOG4J//EN,点击Next
最后点击Finish
创建好的log4j2.xml文件源码如下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration PUBLIC "-//LOG4J//DTD LOG4J//EN" "https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd" > <log4j:configuration></log4j:configuration>
用log4j2.xml的DOCTYPE替换log4j.xml的DOCTYPE
将log4j2.xml文件中的
1 |
这行代码复制,替换log4j.xml中的相同语句即可:
1 |
|
然后删除掉无用的log4j2.xml
解决方案2
取出log4j-xxx.jar文件中的log4j.dtd文件
到eclipse安装目录下创建一个myconfig文件夹
用解压软件,打开log4j的jar文件,然后依次进入org\apache\log4j\xml\目录下,将log4j.dtd复制出来
粘贴到上面创建的myconfig文件夹中.
创建Catalog Entry
在eclipse中点击Windows,Preferences,XML,XML Catalog,Add按钮,
填写Location文本框
点击Catalog Entry,然后点击Location文本框下面的File System按钮,选择刚才保存到myconfig文件夹下的log4j.dtd文件。
填写Key type选择框
然后在Key type选择框中选择System ID
填写key文本框
然后在key文本框中填写如下URL:
1 | https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd |

在Design标签页 修改DOCTYPE
点击log4j.xml文件下方的Design标签页,然后在表格的DOCTYPE这一行上右键,选择Edit DOCTYPE:
- 点击
Public ID右边的Browse按钮,然后选择-//LOG4J//DTD LOG4J//EN这个选择项![图片]()
- 点击
System ID右边的Browse按钮,然后选择Select XML Catalog entry这个单选项,然后在下面的选择框选择这个1
https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd
key![图片]()
查看修改后的log4j.xml源码
点击文件下方的Source查看修改后的效果
修改后的log4j.xml文件如下所示
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//LOG4J//DTD LOG4J//EN" "https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">
<log4j:configuration
xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="STDOUT"
class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%5p [%t] %m%n" />
</layout>
</appender>
<logger name="mapper.EmployeeMapper">
<level value="DEBUG" />
</logger>
<root>
<level value="ERROR" />
<appender-ref ref="STDOUT" />
</root>
</log4j:configuration>

