JAVA中classpath的作用與獲取方式
一、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();
}
}