如何在类path中使用通配符来添加多个jar?

我一直在使用这么多的第三方库(jar文件),我的CLASSPATH完全搞砸了,因为我必须包含我使用的每个jar文件的path。

我一直在想,如果有一种方法可以使用通配符(*)运算符(如* .jar)将所有jar文件包含在文件夹中。 但它似乎不起作用。 有没有其他办法可以缩短目前看起来像散文的CLASSPATH;)在我的电脑上?

来自: http : //java.sun.com/javase/6/docs/technotes/tools/windows/classpath.html

类path条目可以包含基本名称通配符* ,这被认为等价于指定扩展名为.jar或.JAR的目录中所有文件的列表。 例如,类path条目foo/*指定名为foo的目录中的所有JAR文件。 一个由*组成的类path条目将展开为当前目录中所有jar文件的列表。

这应该在Java6中工作,不确定Java5

(如果看起来不像预期的那样工作,请尝试加引号。例如: "foo/*"

这适用于Windows:

 java -cp "lib/*" %MAINCLASS% 

其中%MAINCLASS%当然是包含你的主要方法的类。

或者:

 java -cp "lib/*" -jar %MAINJAR% 

其中%MAINJAR%是通过其内部清单启动的jar文件。

基本名称通配符在Java 6中引入; 即“foo / *”表示“foo”目录中的所有“.jar”文件。

在不支持通配类path的Java早期版本中,我使用shell封装脚本来组装一个类path,通过“模式化”一个模式,并在相应的位置插入“:”字符。 这在BAT文件中很难做到。

如果你的意思是你有一个名为CLASSPATH的环境variables,我会说这是你的错误。 在我开发Java的任何机器上,我都没有这样的事情。 CLASSPATH与特定的项目紧密相连,因此不可能拥有适用于所有人的单一,正确的CLASSPATH。

我使用IDE或Ant为每个项目设置CLASSPATH。 我做了很多web开发,所以每个WAR和EAR都使用自己的CLASSPATH。

它被IDE和应用程序服务器忽略。 你为什么拥有它? 我build议删除它。

为什么不通过将REQUIRED JAR文件移动到一个文件夹并将类path设置到文件夹来清理你的垃圾? ;)