在编译时和运行时都可以用-cp或-classpath来指定classpath,classpath一般用来告诉javac和java用哪里去引入类。
而-sourcepath只用在编译时,告诉javac从哪里引入源码(只搜索java文件),在指定时和classpath之间有如下规则:
1.若不指定sourcepath,指定的classpath也会搜索源码(java文件)
2.若制定sourcepath,再指定classpath将不会搜索源码,javac只会在sourcepath搜索java文件,在classpath搜索class文件。
3.单独指定sourcepath也只会搜索源码。
所以,建议只使用classpath
javac(编译器)即认识java文件也认识class文件,java(虚拟机)只认识class文件。在指定classpath时可以指定目录和zip格式的文件(jar也是zip格式,只要时zip格式就行,后缀可任意),注意必须要具体到zip格式文件,只是指定zip格式文件所在的目录并不会引入zip格式文件,zip格式文件本身就相当于目录。一个zip格式文件对应于一个解压后的路径,会在classpath的这些路径下寻找类。
网友评论