JAVA獲取CLASSPATH路徑

2021-07-05 21:30:24 字數 1752 閱讀 8508

classloader提供了兩個方法用於從裝載的類路徑中取得資源:

public urlgetresource(string name); 

public inputstreamgetresourceasstream(string name); 

這裡name是資源的類路徑,它是相對與「/」根路徑下的位置。getresource得到的是乙個url物件來定位資源,而getresourceasstream取得該資源輸入流的引用保證程式可以從正確的位置抽取資料。

但是真正使用的不是classloader的這兩個方法,而是class的 getresource和getresourceasstream方法,因為class物件可以從你的類得到(如yourclass.class或 yourclass.getclass()),而classloader則需要再呼叫一次yourclass.getclassloader()方法,不過根據jdk文件的說法,class物件的這兩個方法其實是「委託」(delegate)給裝載它的classloader來做的,所以只需要使用 class物件的這兩個方法就可以了。

因此,直接呼叫this.getclass().getresourceasstream(string name);獲取流,靜態化方法中則使用classloader.getsystemresourceasstream

(string name); 。

下面是一些得到classpath和當前類的絕對路徑的一些方法。你可能需要使用其中的一些方法來得到你需要的資源的絕對路徑。

1.this.getclass().getresource("")

得到的是當前類class檔案的uri目錄。不包括自己!

如:file:/d:/workspace/jbpmtest3/bin/com/test/

2.this.getclass().getresource("/")

得到的是當前的classpath的絕對uri路徑

如:file:/d:/workspace/jbpmtest3/bin/

3.this.getclass().getclassloader().getresource("")

得到的也是當前classpath的絕對uri路徑

如:file:/d:/workspace/jbpmtest3/bin/

4.classloader.getsystemresource("")

得到的也是當前classpath的絕對uri路徑

如:file:/d:/workspace/jbpmtest3/bin/

5.thread.currentthread().getcontextclassloader().getresource("")

得到的也是當前classpath的絕對uri路徑

如:file:/d:/workspace/jbpmtest3/bin/

6.servletactioncontext.getservletcontext().getrealpath(「/」)

**:

JAVA獲取CLASSPATH路徑

url classloader提供了兩個方法用於從裝載的類路徑中取得資源 public urlgetresource string name public inputstreamgetresourceasstream string name 這裡name是資源的類路徑,它是相對與 根路徑下的位置。g...

java獲取classpath以外的路徑

最近在使用以前寫過的 生成器 從表名可生成所有的 的時候,發現生成的檔案都在classpath目錄下,所有的檔案都得自己拷到工程目錄下,於是,想優化一下,取得classpath目錄以外的路徑,很簡單,使用getcanonicalpath,如下 string classpath thread.curr...

Java中獲取classpath路徑下的資源檔案

classloader提供了兩個方法用於從裝載的類路徑中取得資源 public url getresource string name public inputstream getresourceasstream string name 這裡name是資源的類路徑,它是相對與 根路徑下的位置。get...