我有一个包含大量jar文件和类路径的文件夹:
-classpath ./classes:./jogamp-all-platforms/jar/*
但它没有找到包裹。为了确保我有资源,我手动找到包含它的jar并将类路径更改为:
-classpath ./classes:./jogamp-all-platforms/jar/jogl-all.jar
现在不抱怨找不到包裹。
答案 0 :(得分:2)
在Debian下,我必须在通配符周围加上引号才能使其正常工作:"*"
然后编译命令变为:
javac -cp ~/my\ stuff/Java/"*" test.java
我正在使用JDK,JRE 8.
答案 1 :(得分:1)
问题是*
已扩展到目录中的所有条目,而classpath语法允许在您的平台上使用:
分隔的目录和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/*'
这样您的编译器将解释*
扩展。
答案 2 :(得分: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。
有关详细信息,请参阅此处的文档 - Wildcards in classpath。
答案 3 :(得分:0)
第一种形式不起作用。您无法使用通配符加载jar文件。除非您缺少依赖类,否则第二种形式应该有效。