我正在用螞蟻構建一個項目,並且在構建過程中我想將log4j.xml
文件直接捆綁到.jar
中,以簡化分發。我已經成功地將該文件添加到.jar
,但它似乎沒有被識別。如何讓.jar識別並使用捆綁的log4j.xml文件?
我需要做些什麼來確保文件被log4j
識別和使用?我是Java的新手,所以如果可能的話,一個清晰的描述將會很棒!
我正在用螞蟻構建一個項目,並且在構建過程中我想將log4j.xml
文件直接捆綁到.jar
中,以簡化分發。我已經成功地將該文件添加到.jar
,但它似乎沒有被識別。如何讓.jar識別並使用捆綁的log4j.xml文件?
我需要做些什麼來確保文件被log4j
識別和使用?我是Java的新手,所以如果可能的話,一個清晰的描述將會很棒!
這將以某種方式起作用。
static // loads before anything else can
{
/*
* If log4j.configuration system property isn't set,
* then assume I'm inside a jar and configure
* log4j using the config file that shipped in the jar.
*/
if (System.getProperty("log4j.configuration") == null)
{
URL url = ClassLoader.getSystemResource("log4j.xml");
DOMConfigurator.configure(url);
}
}
您的應用程序如何被調用?
只要JAR位於類路徑上,其中包含的任何文件也都位於類路徑中。換句話說,log4j在找到some.jar!log4j.xml
,時應該沒有問題,如果some.jar
位於以類路徑開頭的類路徑上。
是否有其他log4j配置文件從類路徑上的其他位置拾取?您可以將-Dlog4j.debug
添加到應用程序的啓動中,以使log4j輸出有關正在使用哪個配置文件的調試信息。另一個JAR中綁定的另一個配置文件很可能首先被找到。不知怎的,
'java -jar myapp.jar';我將爲用戶提供一個jar文件,因此所有內容都包含在該jar文件中。 – 2010-07-23 16:34:47
我相信你需要在'MANIFEST.MF'文件的'Classpath:'屬性中明確包含log4j.xml。用'-jar'啓動進程與「正常」有點不同 – 2010-07-23 17:40:08
?你意思是? – 2010-07-23 16:06:38