一、classpath的作用
1、当需要编译JAVA源文件时,设置classpath 可以解决需要编译的class不在当前目录下的问题。
例如当前目录是D:/java/demo,而需要执行的文件在E:/java/classes/Test.class。
javac -classpath E:/java/classes/Test.java
当需要执行java类文件时,设置classpath的目标路径
java -classpath E:/java/classes/Test
这时,如果设置classpath = "E:/java/classes",则可以写成 java Test
总结:
(1)何时使用classpath:当需要编译的文件和当前路径不在同一个位置,需要加入-classpath 作为编译路径参数。
(2)当需要执行的文件不在当前路径下,可以用classpath 来设置目标路径。
(3)classpath用来设置执行文件,用来作为编译和执行时的参数
java -classpath 目标执行路径
javac -classpath 目标编译路径
2、classpath的获取
(1)获取当前文件的绝对路径
this.getClass().getResource("/");
this.getClass()/getClassLoader().getResource("");
ClassLoader.getSystemResource("");
Thread.currentThread().getContextClassLoader().getResource("");
ServeletActionContext.getServletContext().getRealPath("/");web应用中获取项目路径。
(2)获取文件的文件位置,不包含当前类名称
this.getClass().getResource("");
(3)示例代码:
package com.sufow.classpathdemo;
import java.net.URL;
public class GetClassPathDemo1 {
public void showThePath(){
URL url = this.getClass().getResource("");
System.out.println("文件位置:"+url.getPath());
}
public void showTheAbsolutePath(){
//1
URL url = this.getClass().getResource("/");
System.out.println("文件绝对路径1:"+url.getPath());
//2
url = Thread.currentThread().getContextClassLoader().getResource("");
System.out.println("文件绝对路径2:"+url.getPath());
//3
url = ClassLoader.getSystemResource("");
System.out.println("文件绝对路径3:"+url.getPath());
}
public static void main(String args[]){
GetClassPathDemo1 demo1 = new GetClassPathDemo1();
demo1.showThePath();
demo1.showTheAbsolutePath();
}
}