2011-05-02 51 views
1

我正在使用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。但它仍然沒有從罐子裏挑選。它在指定位置找不到指示文件。

+0

只需創建一個'ClassPathResource'不會做自己的事情。你在做什麼? – skaffman 2011-05-02 10:44:04

+0

正在獲取指定文件的資源並將其用作其他進程的輸入流。 – indira 2011-05-02 10:49:34

+3

我會嘗試退後一步,並從庫中刪除log4j.xml。根據經驗,沒有庫應該包含日誌配置,這是客戶端的責任。 (我假設你擁有KeyManager.jar) – Augusto 2011-05-02 10:50:49

回答

2

什麼:

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

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

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