关于java:log4j.xml引用的文件log4j.dtd包含错误

log4j.xml referenced file log4j.dtd contains errors

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

enter image description here

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

enter image description here

通常,该参考部分可以正常工作,但是从昨天开始,它突然无法编译,也无法将ejbModule ear文件部署到weblogic中间件上。

显示错误如下

1
2
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访问引用的文件位置为
http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd将观察到以下问题:

1
2
3
4
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?,
^

enter image description here

更新:

甚至将格式更改为以下格式也无法解决该问题

1
2
3
4
5
6
7
8
<?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

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

我有两个问题:

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

(2)有什么办法可以解决问题?本地修复?

感谢您的任何想法。


很好,看起来像是由Apache服务上的log4j.dtd文件损坏引起的此问题,我从此链接下载log4j.dtd的源文件,并将其放置到META-INF的相同文件夹中,如下所示:
enter image description here

log4j.xml中将其称为相对路径

1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM
"log4j.dtd"
[
    <!-- Directory to write the log files to -->
    <!ENTITY logDir"C:/.../logs">
]
>

然后清理并编译ejbModule,问题消失了,并能够部署到weblogic中间件。


使用以下代码:-

1
2
<!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">