2012-09-18 119 views
3

設置使用這段代碼,試圖建立一個政策文件:Java安全策略從代碼

ClassLoader cl= getClass().getClassLoader(); 
URL policyURL =cl.getResource("res/policy/new_policy.policy"); 
System.setProperty("java.security.policy", policyURL.toString()); 

而且我上最後一行java.lang.NullPointerException。 該文件位於我的項目目錄中正確的路徑中。

問題:什麼可能導致此異常?

回答:從eclipse運行,路徑是相對於主項目文件夾而不是項目的bin文件夾構建的。考慮到,移動bin文件夾中的res文件夾解決了問題,而無需更改上述任何代碼。

回答

1

如果路徑是在你的項目中,添加一個/

cl.getResource("/res/policy/new_policy.policy") 

但我建議你打印的policyURL值,以檢查您檢索到的文件就OK了。

如果您在Eclipse中執行,請記住資源必須位於資源文件夾中,以便在構建時轉到類文件夾。

Eclipse只執行類,並且這些類位於輸出文件夾中(bin)。

+0

試過這樣,結果一樣。在打印URL時,它是空的。那爲什麼它不加載資源? – CosminO

+1

你正在執行一個jar嗎?從哪個文件夾?你在擴大罐子嗎?你是否從eclipse執行它? – ssedano

+0

它從eclipse – CosminO

1

這會發生,如果:

policyURL.toString() 

爲空,因爲屬性值存儲在一個Hashtable和Hashtable類檢查是否在它的投入方法,並拋出一個NullPointerException如果值爲null 。我會確保您的policyUrl對象正在正確構建。