【问题标题】:specifying a file in a classpathresource在类路径资源中指定文件
【发布时间】: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


【解决方案1】:

怎么样:

ClassPathResource resource = new ClassPathResource("classpath:/sw/merlot/config/log4j.xml");

或者如果它在不同的 jar 文件中:

ClassPathResource resource = new ClassPathResource("classpath*:/sw/merlot/config/log4j.xml");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-13
    • 1970-01-01
    • 2021-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多