【发布时间】:2011-08-16 21:36:39
【问题描述】:
我正在使用classpathresource 来获取文件的资源。在我的代码中指定路径,以便从那里挑选文件。但是它采用了一个同名的文件,该文件已经存在于以前的 jar 中。
即, 我已经指定了,
ClassPathResource resource = new ClassPathResource("/sw/merlot/config/log4j.xml")
其中log4j.xml 是配置文件。
但它需要一个 log4j.xml,它在一个罐子里 -- sw/merlot/lib/keyManager.jar!/log4j.xml
(两者log4j.xml不同[2个不同的配置文件])
所以我把它改成了,
ClassPathResource resource = new ClassPathResource("file:///sw/merlot/config/log4j.xml")
但它仍然无法正常工作。
不知道我指定文件的方式是否正确?
我也尝试使用 jar 指定文件。
ClassPathResource resource = new ClassPathResource("jar:file:///sw/merlot/lib/keyManager111.jar!/log4j.xml")
keyManager111.jar 包含我想要的 log4j.xml。但它仍然没有从罐子里采摘。在指定位置找不到它的提示文件。
【问题讨论】:
-
仅仅创建一个
ClassPathResource本身并不能做任何事情。你用它做什么? -
正在获取指定文件的资源并将其用作其他进程的输入流。
-
我会尝试退后一步,从库中删除 log4j.xml。根据经验,任何库都不应包含日志记录配置,这是客户端的责任。 (我假设你拥有 KeyManager.jar)
-
为奥古斯托+1。如果库真的需要它自己的 log4j.xml,那么不要把你的放在同一个包中。包的存在正是为了避免名称冲突(对于类和其他资源)。
-
你还没有向我们展示你想用
ClasspathResource做些什么
标签: java spring jar log4j classpath