sjn*_*ngm 114 xml eclipse configuration log4j
我一直在使用log4j已经有一段时间了,我通常在log4j.xml的顶部使用它(可能就像许多其他人一样,根据谷歌这是这样做的方式):
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
Run Code Online (Sandbox Code Playgroud)
显然这是有效的,但Eclipse并没有为编写XML提供其上下文相关的帮助.此外,它总是显示一个警告,它没有找到log4j.dtd
.现在我很好奇如何解决这个问题.
我尝试了一些事情,这些工作:
<!DOCTYPE log4j:configuration SYSTEM "jar:file:/path/.m2/repository/log4j/log4j/1.2.14/log4j-1.2.14.jar!/org/apache/log4j/xml/log4j.dtd">
<!DOCTYPE log4j:configuration SYSTEM "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">
Run Code Online (Sandbox Code Playgroud)
从上面可以看出我们正在使用Maven.因此,我试过这个,但它失败了:
<!DOCTYPE log4j:configuration SYSTEM "jar:file:${M2_REPO}/log4j/log4j/1.2.14/log4j-1.2.14.jar!/org/apache/log4j/xml/log4j.dtd">
Run Code Online (Sandbox Code Playgroud)
Eclipse通常知道如何处理类路径变量,但为什么这不起作用?我知道引用在运行时不起作用,但也不是简单的log4j.dtd
(如果我没有错),所以这不应该是一个问题.
任何人都可以对此有所了解吗?
Jac*_*eow 172
我知道这个问题已得到解答,但我想提供一些略有不同的选择:
<!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">
Run Code Online (Sandbox Code Playgroud)
它类似于@ FrVaBe的响应,但从好的方面来说,不需要任何进一步的Eclipse配置(即,如果你与其他人共享你的项目,或者拥有一个庞大的团队,那么就不用担心了).
不利的一面是,我认为这意味着你需要一个互联网连接(至少在开发过程中的某个时刻,即使它只是一次).
FrV*_*aBe 40
尝试在"首选项 - > XML - > XML目录"中将log4j.dtd添加为用户特定的URI XML目录条目.据我所知,这是eclipse管理定义/验证文件(如xsd)的引用的地方.如果可以在这里找到eclipse,则无需访问互联网,即可在其原生(网络)位置访问它们.
我是这样做的(测试)和eclipse不抱怨:
Entry element: URI
Location: C:\Users\me\Desktop\log4j.dtd
URI: file:///C:/Users/me/Desktop/log4j.dtd
Key type: URI
Key: http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd
Run Code Online (Sandbox Code Playgroud)
也许$ {M2_REPO}也有效 - 我没有检查过这个.
之后使用log4j.xml中的本机URL
<!DOCTYPE log4j:configuration SYSTEM "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">
Run Code Online (Sandbox Code Playgroud)
编辑
我会使用上面的解决方案,但回到你的问题,我认为类路径变量'可以在Java Build Path中使用'.他们为什么要在DOCTYPE定义中工作?"验证"(eclipse上下文菜单)log4j.xml文件,您将收到无法解析路径的警告.
我希望classpath:org/apache/log4j/xml/log4j.dtd
能做到这一点,但该协议也不支持(参见验证错误).我担心它不会开箱即用.
而且,据我所知,SYSTEM "log4j.dtd"
符号不是占位符.它是对预期在dtd旁边找到的文档的有效引用(在本例中).
归档时间: |
|
查看次数: |
84015 次 |
最近记录: |