log4j.xml引用文件log4j.dtd包含错误

时间:2017-06-19 16:10:25

标签: java xml apache logging log4j

我们有一个包含ejbModule的项目,log4j.xml文件夹中有一个ejbModule META-INF文件,如下所示

enter image description here

在这个log4j.xml文件中,首先从Apache服务器引用dtd文件开始,格式如下

enter image description here

通常,这个引用部分工作正常,但从昨天起它突然无法编译,无法将ejbModule ear文件部署到weblogic中间件上。

显示如下错误

Description Resource Path Location Type
Referenced file contains errors (http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd).  For more information, right click on the message in the Problems View and select "Show Details..." log4j.xml   /TEST_EJB/ejbModule line 1  XML Problem

enter image description here

然后我从给定的url访问引用的文件位置 enter image description here会将问题视为

XML Parsing Error: syntax error
Location: http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd
Line Number 27, Column 1:<!ELEMENT log4j:configuration (renderer*, appender*,plugin*, (category|logger)*,root?,
^

http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd

更新

甚至更改格式以便无法解决问题

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN"
"http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd"
[
    <!-- Directory to write the log files to -->
    <!ENTITY logDir "C:/.../logs">
]
>

enter image description here

我已将链接检查为enter image description here,实际上我们使用相同的方式在他的问题中引用log4j.dtd文件(在maven部分失败之前声明为成功部分)

我有两个问题:

(1)这个问题是否发生在Apache端(不是因为编码或本地设置)?

(2)有什么方法可以解决这个问题吗?在本地修复?

感谢您的任何想法。

2 个答案:

答案 0 :(得分:0)

使用以下代码: -

<!DOCTYPE log4j:configuration PUBLIC
 "-//APACHE//DTD LOG4J 1.2//EN" "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">

答案 1 :(得分:0)

很好,看起来这个问题是由Apache服务上的log4j.dtd文件损坏造成的,我从link下载了log4j.dtd的源文件,并将其放在同一文件夹{ {1}}如下: enter image description here

META-INF中将其作为相对路径

log4j.xml

然后清理并编译<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" [ <!-- Directory to write the log files to --> <!ENTITY logDir "C:/.../logs"> ] > ,问题就消失了,并且能够部署到weblogic中间件。