2015-02-24 63 views
1

我對從特定文件夾添加特定jar的問題有疑問。使用正則表達式在類路徑中添加jar

場景: 我有一個lib文件夾,其中包含一些jar文件。由於某些問題,我必須優先考慮其他人的jar文件。

將這一問題:http://bugzilla.slf4j.org/show_bug.cgi?id=327

現在試圖把一個特定的jar文件被加載先在這裏的log4j-1.2.17.jar

一種選擇是,我只是在我的應用程序的腳本硬編碼這確保這個jar總是先在類路徑中添加。

問題的辦法: 由於該項目是基於Maven的,有一個機會,log4j的版本變化。在這種情況下,我很容易再次遇到同樣的問題,因爲我必須去改變腳本中的版本。

其他選項(我正在尋找解決方案),有一定的可能性,如:

示例命令(預期,但這不是工作雖然):

java -cp <path to my app>/lib/log4j*:<path to my app>/lib/* MainClass 

優勢我在這裏看到,即使log4j版本發生變化,我也不必更改腳本。

需要輸入如何才能實現方法2?

感謝

回答

1

根據此:http://docs.oracle.com/javase/7/docs/technotes/tools/windows/classpath.html

類路徑條目可包含的基本部分通配符,這被認爲等同於指定在擴展目錄下的所有文件的列表。 jar或.JAR。例如,類路徑條目foo/指定名爲foo的目錄中的所有JAR文件。一個僅包含*的類路徑條目展開爲當前目錄中所有jar文件的列表。

所以「*」等同於目錄中的所有* .jar文件。也許你可以把log4j放在lib/log目錄下?以下是在Windows下工作:

java -cp "lib\*;lib\log\*" MainClass 
+0

這是我已經實施的解決方案。如果你看看我的問題,我不是在尋找子目錄而是相同的目錄,只需從classpath中加載log4j jar,然後在jarpath中加載其他jar。但我想這是沒有可能的。 – 2015-02-24 11:01:37

+0

似乎這是唯一的出路。 – 2015-02-25 07:02:09