2010-11-06 122 views
0

我有一個包含在A.JAR中的應用程序。這個jar有幾個依賴關係,所以它們在清單中被指定爲「lib/B.JAR lib/C.JAR lib/D.JAR」。我有我的安裝目錄A.JAR,在它下面我有lib目錄與其他三個。運行jar文件時增量設置類路徑的問題

我進入我的安裝目錄並運行「java -jar A.JAR」來運行應用程序,並開始運行。但是,它會查找用於設置log4j的log4j.properties。現在據我所知,log4j.properties需要在類路徑中。

現在讓我們假設我想運行幾個A.JAR實例,但是具有各種log4j屬性。所以我設置了4個安裝目錄(inst1,inst2,...),並且我已經將A.JAR,一個自定義的log4j.properties和lib目錄放入其中。

  1. 這是正確的路要走(忘記複製本身,我可以用符號鏈接來做到這一點)?也許有辦法告訴log4j在運行時使用一些define(-D)來查找特定位置的屬性?
  2. 如果我所描述的是一個好的設置,我該如何運行它? Java不會「捕捉」log4j.properties作爲其類路徑的一部分。運行「java -classpath。-jar A.JAR」也沒有幫助。

回答

4

您可以使用log4j.configuration系統屬性定義您希望log4j使用的屬性文件。

在某些目錄中的文件一個簡單的例子是:

java -Dlog4j.configuration=file:/c:/foobar.properties YOUR CLASS PATH -jar JAR FILE 

欲瞭解更多信息,請檢查documentation。特別是檢查默認初始化程序部分。

+0

也看看-Dlog4j.debug開關。知道它在哪裏尋找是非常有用的。 – mschonaker 2010-11-06 06:59:54

+0

+1 - 這是正確的方法,儘管OP可能需要創建一些包裝腳本來啓動具有不同日誌配置的應用程序。 – 2010-11-06 07:02:06

+0

@Faisel - 謝謝,我會用它。 – 2010-11-06 09:49:27