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

pau*_*ard 95 java wildcard classpath

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

我一直想知道是否有办法使用通配符(*)运算符(如*.jar)将所有jar文件包含在文件夹中.但似乎没有用.有没有其他方法可以缩短当前看起来像文章的CLASSPATH;)在我的电脑上?

Ita*_*man 95

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

类路径条目可以包含basename通配符*,这被认为等同于指定扩展名为.jar或.JAR的目录中所有文件的列表.例如,类路径条目foo/*指定名为foo的目录中的所有JAR文件.一个只包含的类路径条目*扩展为当前目录中所有jar文件的列表.

这应该适用于Java6,不确定Java5

(如果它似乎它不能按预期工作,尝试把引号例如:. "foo/*")

  • 节省时间提示:将"*"(带有周围的双引号)而不仅仅*用于此工作(至少在Windows上).:) (30认同)
  • 常见的错误是"foo/*.jar",这是行不通的.只能使用"foo/*" (8认同)
  • 只是为了扩展@Amos,对于java 1.7,groovy 2.1.5和windowsXP,我不得不使用-cp"./*". (3认同)

Chr*_*urn 23

这适用于Windows:

java -cp "lib/*" %MAINCLASS%
Run Code Online (Sandbox Code Playgroud)

这里%MAINCLASS%当然是包含main方法的类.

或者:

java -cp "lib/*" -jar %MAINJAR%
Run Code Online (Sandbox Code Playgroud)

%MAINJAR%通过其内部清单启动的jar文件在哪里.

  • 我无法找到工作的替代方案.-jar应该覆盖-cp并且似乎这样做,即使Class-Path不在jar清单中.如果你想包括工作目录和lib这似乎工作:`java -cp".\*; lib\*"%MAINCLASS%` (6认同)
  • 另一种选择是完全错误的。使用“-jar”时,“-cp”参数将被忽略。 (3认同)
  • 基于替代方案的整个问题 [here](http://stackoverflow.com/questions/250166/noclassdeffounderror-while-trying-to-run-my-jar-with-java-exe-jar-whats-wron) (2认同)

Ste*_*n C 6

Java 6引入了Basename通配符; 即"foo/*"表示"foo"目录中的所有".jar"文件.

在不支持通配符类路径的Java的早期版本中,我已经使用shell包装器脚本通过'globbing'模式组合Classpath并将结果修改为在适当的点插入':'字符.这在BAT文件中很难做到......