我有一个包含大量 jar 文件和类路径的文件夹:
-classpath ./classes:./jogamp-all-platforms/jar/*
但它没有找到包。只是为了确保我有相关资源,我手动找到包含它的 jar 并将类路径更改为:
-classpath ./classes:./jogamp-all-platforms/jar/jogl-all.jar
现在它不再抱怨找不到包裹了。
在 Debian 下,我必须在通配符周围加上引号才能使它起作用:"*"
那么编译命令就变成了:
javac -cp ~/my\ stuff/Java/"*" test.java
我正在使用JDK,JRE 8。
问题是扩展到您目录中的所有条目,并且类路径语法允许在您的平台上*
分隔目录和 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/*'
这样,您的编译器将解释*
扩展。
我认为您需要在如下;
之后用作路径分隔符./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。
有关更多详细信息,请参阅此处的文档 -类路径中的通配符。
The first form will not work. You cannot load jar files with wildcards. The second form should work, unless you're missing dependent classes.