104

我一直在使用如此多的 3rd 方库(jar 文件),以至于我的 CLASSPATH 完全搞砸了,因为我必须包含我使用的每个 jar 文件的路径。

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

4

4 回答 4

104

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

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

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

(如果它似乎没有按预期工作,请尝试加上引号。例如"foo/*":)

于 2009-08-06T05:26:41.250 回答
25

这适用于 Windows:

java -cp "lib/*" %MAINCLASS%

%MAINCLASS%当然,包含您的主要方法的类在哪里。

或者:

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

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

于 2012-11-28T16:11:30.487 回答
6

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

在不支持通配符类路径的早期 Java 版本中,我使用 shell 包装器脚本通过“通配”模式并修改结果以在适当的点插入“:”字符来组装类路径。这在 BAT 文件中很难做到……

于 2009-08-06T06:01:17.780 回答
0

如果您的意思是您有一个名为 CLASSPATH 的环境变量,我会说那是您的错误。在我开发 Java 的任何机器上都没有这样的东西。CLASSPATH 与特定项目紧密相关,因此不可能有一个适用于所有人的单一、正确的 CLASSPATH。

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

IDE 和应用服务器会忽略它。你为什么拥有它?我建议删除它。

于 2009-08-06T09:46:46.747 回答