[英]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.