如何在类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设置到文件夹来清理你的垃圾? ;)