JVM只会获取.jar文件吗?

时间:2016-01-22 21:37:46

标签: java jar jvm

当我将-classpath参数提交给java时,它会仅选择具有.jar个扩展名的文件,或者它会尝试查看-classpath中的其他文件路径也是?

如果我将-classpath指定为包含

/mypath,则含义
/mypath/IAmANormalJar.jar
/mypath/IAmAJarWithoutExtension

其中IAmAJarWithoutExtension是一个实际的jar文件但没有.jar扩展名。只有/mypath/IAmANormalJar.jar可以由JVM加载,还是/mypath/IAmAJarWithoutExtension也会被加载?

3 个答案:

答案 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类路径的维基百科文章在这方面提供了一些很好的信息:

https://en.wikipedia.org/wiki/Classpath_(Java)

答案 2 :(得分:0)

它只会获取扩展名为.class,.jar或.zip的文件。当我想在两个罐子之间进行测试时,我常常使用的一个技巧是在我希望“out”的文件中添加另一个扩展。如果我想测试的版本是mylib.jar,我会将旧版本修改为mylib.jar.old,它们可以在目录中共存。