一、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();
}
}