天天看點

JAVA Appliation下取得資源檔案的路徑

今天要寫一個單元測試,這個單元測試類要去讀和它同目錄的一個XML檔案。它的位置如下:

ConfigFactoryImplTest要去讀取boss-connector-service.xml。

JAVA Appliation下取得資源檔案的路徑

那麼如果得到這個檔案呢?先看下面的一個對路徑的測試代碼

import java.io.File;

public class PathTest {

  public static void main(String[] args) throws Exception {

    System.out.println(

    Thread.currentThread().getContextClassLoader().getResource(""));

    System.out.println(PathTest.class.getClassLoader().getResource(""));

    System.out.println(ClassLoader.getSystemResource(""));

    System.out.println(PathTest.class.getResource(""));

    System.out.println(PathTest.class.getResource("/"));

    System.out.println(new File("").getAbsolutePath());

    System.out.println(System.getProperty("user.dir"));

  }

}

列印各種路徑結果如下:

file:/E:/wxxr_projects2/wxxr-applications/wxxr-boss-connector/target/test-classes/

file:/E:/wxxr_projects2/wxxr-applications/wxxr-boss-connector/target/test-classes/com/wxxr/boss/config/

E:\wxxr_projects2\wxxr-applications\wxxr-boss-connector

發現PathTest.class.getResource("")得到了絕對路徑,嗯,就它了。于是将ConfigFactoryImplTest類裡的代碼書寫如下(這裡是用DOM來讀XML):

    private static Element getRootElement() throws Exception {

        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

        DocumentBuilder db = dbf.newDocumentBuilder();

        Document doc = db.parse(ConfigFactoryImplTest.class.getResource("") + "boss-connector-service.xml");

        return doc.getDocumentElement();

    }

後記:

得到資源檔案的路徑,在不同的環境(如:Eclipse RCP、Tomcat、Weblogic、簡單的Java Application),方法都是略有不同的。具體的環境要具體分析。