2014-09-26 47 views
0

我有我在Linux上從一個可執行的JAR文件log4j喜歡它在jar文件中的屬性?

java -cp .:./lib -Duser.timezone=GMT -Dlog4j.debug -jar programName.jar 

程序使用了其他一些jar文件這些都是在一個目錄和4個屬性直接執行Java應用程序文件的全是在另一個目錄(當前目錄)中。這兩個目錄都包含在CLASSPATH中。

夠簡單吧。

這將是,除了Log4j未能找到log4j.properties。我已經成功的唯一途徑,使其找到log4j.properties是將其包括在programName.jar

這不是我想要的,我想要使用log4j.properties它駐留在同一目錄中的所有其他屬性的文件,他們是在CLASSPATH並按照您的預期找到。

正在使用的其他jar文件是:

  • jdom-2.0.5.jar
  • log4j-1.2.17.jar
  • ojdbc7.jar
  • quartz-2.2.1.jar
  • slf4j-api-1.7.7.jar
  • slf4j-log4j12-1.7.7.jar

我想知道是否slf4j-log4j12-1.7.7.jar做一些配置,防止log4j在尋找屬性文件時掃描CLASSPATH。我的代碼不包含任何旨在指定屬性文件位置的說明。

我還沒有嘗試執行該程序沒有-jar選項,我會嘗試下一步。

到目前爲止,這個鈴響了嗎?

回答

1

將參數添加到jvm(log4j.configuration)。例如:

java -cp .:./lib -Dlog4j.configuration=file:log4j.properties -Duser.timezone=GMT ... 

您可能想要查看此answer以獲取更多選項。

+0

謝謝你的建議,但我不明白你的推理。我的log4j.properties只是根據它的內容定製的。它的名字和位置是標準的。請你能詳細解釋爲什麼當我使用標準(非xml)名稱時需要指定名稱。 – user835745 2014-09-26 15:55:38

+0

我更新了我的答案。我希望這可以幫助你。 :) – 2014-09-26 17:24:17

+0

你好保羅,謝謝你,你的建議確實有幫助,它讓我走了。可悲的是我仍然感到沮喪,不知道爲什麼Log4j無法找到log4j.properties,即使它在CLASSPATH中。 – user835745 2014-09-29 19:09:21