2013-04-09 125 views
1

我有一個特性在位置文件(從NetBeans項目資源管理器)找不到屬性文件 - 如何找到它作爲資源?

-MyTest 
    +Web Pages 
    +Source Packages 
    -Test Packages 
     -<default package> 
      +Env.properties  <---- Here it is 
     +com.mycomp.gts.test 
     +com.mycomp.gts.logintest 
     ..... 
     .... 

現在,當我試圖使用代碼

InputStream propertiesInputStream = getClass().getResourceAsStream("Env.properties"); 
ENV.load(propertiesInputStream); 

它扔java.lang.NullPointerException

+0

此答案可能有助於您的情況:http://stackoverflow.com/a/8854824/122442 – 2013-04-09 06:34:33

回答

6

你不能用它來找到這個文件該類作爲加載資源的參考,因爲資源路徑是而不是相對於該類。使用的類加載器來代替:

InputStream propertiesInputStream = getClass().getClassLoader() 
     .getResourceAsStream("Env.properties"); 
ENV.load(propertiesInputStream); 

或者,你可以使用當前線程的上下文類加載器:

InputStream propertiesInputStream = Thread.currentThread() 
    .getContextClassLoader().getResourceAsStream("Env.properties"); 
ENV.load(propertiesInputStream); 
+1

同樣的錯誤.... java.lang.NullPointerException – coure2011 2013-04-09 06:25:44

+0

您正在運行測試包中的代碼嗎? – Perception 2013-04-09 06:38:11

+0

yes右擊測試方法並運行測試 – coure2011 2013-04-09 06:45:51

1
String basePath = PropertiesUtil.class.getResource("/").getPath(); 
InputStream in = new FileInputStream(basePath + "Env.properties"); 
pros.load(in); 

祝你好運:)

+0

什麼是PropertiesUtil? netbeans用紅色表示它 – coure2011 2013-04-09 06:29:58

+0

它指的是任何類都可以。 – 2013-04-09 06:31:50

+0

構建失敗:無法找到符號類PropertiesUtil – coure2011 2013-04-09 06:34:38

1

嘗試獲得絕對路徑與:

String absolute = getClass().getProtectionDomain().getCodeSource().getLocation().toExternalForm(); 

您可以打印出字符串absolute並嘗試將其子串綁定到屬性文件的路徑。