【问题标题】:log4j.xml referenced file log4j.dtd contains errorslog4j.xml 引用的文件 log4j.dtd 包含错误
【发布时间】:2017-11-21 22:47:28
【问题描述】:

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

在这个 log4j.xml 文件上,最初从 Apache 服务器引用的 dtd 文件开始,格式如下

通常,此参考部分工作正常,但从昨天开始,它突然无法编译,也无法将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

然后我从给定的 url 访问引用的文件位置 http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd 将观察问题为

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?,
^

更新:

即使将格式更改为关注也无法解决问题

<?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">
]
>

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

我有两个问题:

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

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

感谢您提供任何想法。

【问题讨论】:

    标签: java xml apache logging log4j


    【解决方案1】:

    使用以下代码:-

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

    【讨论】:

    • 谢谢,但即使更改为此处给出的代码,也无法修复,已经更新问题以通知这一点。
    【解决方案2】:

    好的,看来这个问题是由于Apache服务上的log4j.dtd文件损坏引起的,我从这个link下载了log4j.dtd的源文件,并将它放在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">
    ]
    >
    

    然后清理编译ejbModule,问题就解决了,可以部署到weblogic中间件了。

    【讨论】:

      猜你喜欢
      • 2011-06-27
      • 1970-01-01
      • 2012-02-02
      • 2020-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多