说明
- Java编译时可以通过选项–source-path
,或者-sourcepath 来指定类或者接口的定义。
注意:指定的路径是指存放Java包的位置,里边不包含Java包的路径。
举例
Java类的层次结构(后面几个例子用到)
例如java源文件的层次结构如下,其中com.thb是Java包名:
Person 是父类:
package com.thb;
public class Person {
public String getOccupation() {
return "";
}
}
Student 是Person 的子类:
package com.thb;
public class Student extends Person {
@Override
public String getOccupation() {
return "student";
}
}
既不指定classpath,也不指定sourcepath,编译出错
因为Student依赖Person,没有指明到哪边寻找Person的定义,编译出错:
指定的sourcepath中含有包名,编译出错
下面用-sourcepath src\com\thb指定了源文件Person.java的搜索路径,但是错误的,因为com/thb是包名的一部分,不应该包含在内:
指定了正确的sourcepath,编译成功
下面用-sourcepathsrc指定了源文件Person.java的位置,编译成功:
到输出目录查看,生成了正常的class文件:
同时编译被依赖的源文件,可以不指定sourcepath
在src/com/thb目录下有Person.java和Student.java文件,其中Student依赖于Person,现在全部编译该目录下的文件,不指定sourcepath编译成功:
到输出目录查看,生成了正常的class文件: