我一直在使用这么多第三方库(jar文件),我的CLASSPATH完全搞砸了,因为我必须包含我使用的每个jar文件的路径。
我一直想知道是否有办法使用通配符(*)运算符(如* .jar)将所有jar文件包含在文件夹中。但似乎没有用。有没有其他方法可以缩短当前看起来像文章的CLASSPATH;)在我的电脑上?。
答案 0 :(得分:90)
来自:http://java.sun.com/javase/6/docs/technotes/tools/windows/classpath.html
类路径条目可以包含基本名称通配符
*
,它被认为等同于指定扩展名为.jar或.JAR的目录中所有文件的列表。例如,类路径条目foo/*
指定名为foo的目录中的所有JAR文件。简单地由*
组成的类路径条目扩展为当前目录中所有jar文件的列表。
这应该适用于Java6,不确定Java5
(如果它似乎无法按预期工作,请尝试输入引号。例如:"foo/*"
)
答案 1 :(得分:23)
这适用于Windows:
java -cp "lib/*" %MAINCLASS%
其中%MAINCLASS%
当然是包含主要方法的类。
可替换地:
java -cp "lib/*" -jar %MAINJAR%
其中%MAINJAR%
是通过其内部清单启动的jar文件。
答案 2 :(得分:6)
Java 6中引入了Basename通配符;即“foo / *”表示“foo”目录中的所有“.jar”文件。
在不支持通配符类路径的早期Java版本中,我使用shell包装器脚本通过'globbing'模式组合Classpath并将结果修改为在适当的点插入':'字符。这在BAT文件中很难做到......
答案 3 :(得分:0)
如果你的意思是你有一个名为CLASSPATH的环境变量,我会说这是你的错。我在开发Java的任何机器上都没有这样的东西。 CLASSPATH与特定项目紧密相关,因此无法拥有适用于所有人的单一,正确的CLASSPATH。
我使用IDE或Ant为每个项目设置CLASSPATH。我做了很多web开发,所以每个WAR和EAR都使用自己的CLASSPATH。
IDE和应用服务器忽略了它。你为什么拥有它?我建议删除它。