6

我有一个包含大量 jar 文件和类路径的文件夹:

-classpath ./classes:./jogamp-all-platforms/jar/*

但它没有找到包。只是为了确保我有相关资源,我手动找到包含它的 jar 并将类路径更改为:

-classpath ./classes:./jogamp-all-platforms/jar/jogl-all.jar

现在它不再抱怨找不到包裹了。

4

4 回答 4

2

在 Debian 下,我必须在通配符周围加上引号才能使它起作用:"*"

那么编译命令就变成了:

javac -cp ~/my\ stuff/Java/"*" test.java

我正在使用JDK,JRE 8。

于 2014-04-23T13:36:06.677 回答
1

问题是扩展到您目录中的所有条目,并且类路径语法允许在您的平台上*分隔目录和 jar 文件。已扩展,并将包含您目录中的所有 jar,您将以以下内容结束::*

-classpath ./classes:./jogamp-all-platforms/jar/jogl-all.jar another.jar etc.jar

如果在您的./jogamp-all-platforms/目录中,您有jogl-all.jar another.jar etc.jar罐子。

您可以使用以下内容逃避*shell 的扩展:

-classpath './classes:./jogamp-all-platforms/jar/*'

这样,您的编译器将解释*扩展。

于 2012-10-30T18:35:28.580 回答
1

我认为您需要在如下;之后用作路径分隔符./classes

 -classpath ./classes;./jogamp-all-platforms/jar/*

另请注意:

Subdirectories are not searched recursively. For example, jogamp-all-platforms/jar/* looks for JAR/Class files only in jogamp-all-platforms/jar, not in jogamp-all-platforms/jar/abcd, jogamp-all-platforms/jar/efc, etc.

通过这样做-classpath ./classes:./jogamp-all-platforms/jar/*,它只查看文件jogamp-all-platforms/jar夹中的所有 JAR。

有关更多详细信息,请参阅此处的文档 -类路径中的通配符

于 2012-10-30T18:35:50.870 回答
0

The first form will not work. You cannot load jar files with wildcards. The second form should work, unless you're missing dependent classes.

于 2012-10-30T18:34:25.503 回答