当我将-classpath
参数提交给java
时,它会仅选择具有.jar
个扩展名的文件,或者它会尝试查看-classpath
中的其他文件路径也是?
如果我将-classpath
指定为包含
/mypath
,则含义
/mypath/IAmANormalJar.jar
/mypath/IAmAJarWithoutExtension
其中IAmAJarWithoutExtension
是一个实际的jar文件但没有.jar
扩展名。只有/mypath/IAmANormalJar.jar
可以由JVM加载,还是/mypath/IAmAJarWithoutExtension
也会被加载?
答案 0 :(得分:5)
http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/classpath.html
既不是目录也不是归档的类路径条目(.zip或.zip .jar文件)也*被忽略。
通配符解释:
类路径条目可以包含基本名称通配符, 这被认为等同于指定所有文件的列表 在扩展名为.jar或.JAR的目录中。例如, 类路径条目foo / 指定名为的目录中的所有JAR文件 FOO。简单地由*组成的类路径条目扩展为所有的列表 当前目录中的jar文件。文件将被考虑 无论它们是否被隐藏(即有名字 以'。'开头。)。
答案 1 :(得分:1)
Java classpath要求使用扩展名指定jar来完成。如果没有扩展,Java会将其视为存在要添加到Java类路径的类文件的目录。关于Java类路径的维基百科文章在这方面提供了一些很好的信息:
答案 2 :(得分:0)
它只会获取扩展名为.class,.jar或.zip的文件。当我想在两个罐子之间进行测试时,我常常使用的一个技巧是在我希望“out”的文件中添加另一个扩展。如果我想测试的版本是mylib.jar,我会将旧版本修改为mylib.jar.old,它们可以在目录中共存。