2015-02-24 45 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