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>