[JAVA] JAVA 类路径
Java 类路径
类路径是所有包含类文件的路径的集合。
类路径中的目录和归档文件是搜寻类的起始点。
虚拟机搜寻类
- 搜寻jre/lib和jre/lib/ext目录中归档文件中所存放的系统类文件
- 搜寻再从搜寻类路径
测试搜寻类
Person.java 源文件
public class Person
{
private String name;
public Person(String name)
{
this.name = name;
}
public void PrintName()
{
System.out.println("Name is:" + name);
}
}
Welcome.java 源文件
/**
* 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();
}
}
测试执行
在源码所在目录执行
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
执行代码
//未设置类路径
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
包的代码编译, 在包的目录执行
➜ java pwd
/Users/abeen/abeen/alearn/java
➜ java ls
alearnJava
➜ javac alearnJava/Welcome.java
➜ java alearnJava/Welcome
---------------------
➜ alearn pwd
/Users/abeen/abeen/alearn
➜ alearn ls
aipythonnotebook asm_c java
➜ alearn javac -cp ./java/ ./java/alearnJava/Welcome.java
➜ alearn java -cp ./java/ alearnJava/Welcome
Hello World!
Name is:ABeen