类路径是全部包含类文件的路径的集合。
类路径中的目录和归档文件是搜寻类的起始点。java
虚拟机搜寻类测试
Person.java 源文件this
public class Person { private String name; public Person(String name) { this.name = name; } public void PrintName() { System.out.println("Name is:" + name); } }
Welcome.java 源文件spa
/** * This program dispalys Hello World * @version 1.0 * @author ABeen * */ public class Welcome { public static void main(String[] args) { String greeting = "Hello World!"; System.out.println(greeting); String name = "ABeen"; Person e = new Person(name); e.PrintName(); } }
测试执行
在源码所在目录执行code
mac-abeen:java abeen$ javac Welcome.java 编译正常 mac-abeen:java abeen$ java Welcome 执行正常 Hello World! Name is:ABeen mac-abeen:java abeen$
在非源码目录执行源码
编译代码虚拟机
//未设置类路径,编译时找不到引用的源文件 mac-abeen:alearn abeen$ javac ./java/Welcome.java ./java/Welcome.java:16: 错误: 找不到符号 Person e = new Person(name); ^ 符号: 类 Person 位置: 类 Welcome ./java/Welcome.java:16: 错误: 找不到符号 Person e = new Person(name); ^ 符号: 类 Person 位置: 类 Welcome 2 个错误 //设置类路径 mac-abeen:alearn abeen$ javac -cp ./java ./java/Welcome.java
执行代码io
//未设置类路径 mac-abeen:alearn abeen$ java ./java/Welcome 错误: 找不到或没法加载主类 ..java.Welcome 缘由: java.lang.ClassNotFoundException: //java/Welcome //设置类路径 mac-abeen:alearn abeen$ java --class-path=/Users/abeen/abeen/alearn/java Welcome Hello World! Name is:ABeen