' *'的特殊含义是什么?在Java类路径?

时间:2015-09-21 11:53:44

标签: linux shell command-line command

此示例行中'*' ...的含义是什么?

javac -classpath .:classes:/opt/pi4j/lib/'*' ...  

1 个答案:

答案 0 :(得分:1)

引用通配符*以阻止shell在您输入命令行时尝试展开它。

但是,根据this page from the Oracle Java documentation,类路径本身可以评估通配符:

  

类路径条目可以包含基本名称通配符,   这被认为等同于指定所有文件的列表   在扩展名为.jar或.JAR的目录中。例如,   类路径条目foo / 指定名为的目录中的所有JAR文件   FOO。简单地由*组成的类路径条目扩展为所有的列表   当前目录中的jar文件。文件将被考虑   无论它们是否被隐藏(即有名字   以'。'开头。)。

     

包含*的类路径条目与类文件不匹配。至   将类和JAR文件匹配在一个目录foo中,使用其中一个   foo:foo / *或foo / *:foo。选择的顺序决定了   foo中的类和资源在foo中的JAR文件之前加载,或者   反之亦然。

     

不会递归搜索子目录。例如,foo / *看起来   对于仅在foo中的JAR文件,而不是在foo / bar,foo / baz等中

如果您根本不理解*,则需要关注How to Use Wildcards