繁体   English   中英

Java类路径通配符不能在没有引号的情况下工作

[英]Java classpath wildcard not working without quotes

我有一个包含大量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 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/* ,它-classpath ./classes:./jogamp-all-platforms/jar/*查看jogamp-all-platforms/jar文件夹中的所有JAR。

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

第一种形式不起作用。 您无法使用通配符加载jar文件。 除非您缺少依赖类,否则第二种形式应该有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM