從JAR

2011-07-18 47 views
1

我使用下述代碼來讀取從Java類文件(.cer文件)讀取外部文件。 java類將被捆綁在一個Jar中,然後被包含到一個EAR中。從JAR

FileInputStream inStream = new FileInputStream ("/home/test/foo.cer"); 

我也試過

FileInputStream inStream = new FileInputStream ("home/test/foo.cer"); 

但他們兩人拋出FileNotFoundException異常。 EAR在Unix系統中部署在Weblogic中。我已經驗證了路徑和文件名。

任何想法如果我缺少什麼?

+0

你確定該文件中指定的路徑存在? –

+2

您需要驗證文件是否存在,並且運行Weblogic進程的用戶具有rx對/ home/test的訪問權限才能讀取foo.cer – Kal

回答

1

我建議,包括應用服務器的類路徑的.CER文件的位置,然後用類加載器的getResourceAsStream(String location)方法加載它。

如果您添加目錄/home/test到classpath,相應的代碼應該是:

this.getClass().getClassLoader().getResourceAsStream("foo.cer"); 

我發現這是一個應用程序服務器上運行時加載外部資源的一個更爲可靠的方法,再加上它使測試更容易。

+1

儘管現有的方法*仍然可行,奇怪的安全事情正在進行。 – skaffman

+0

確實 - 我希望安全問題以不同於FileNotFoundException的方式顯現 - 您是否在@skaffman之前看到過? – Brabster

+0

是的,你通常會得到'SecurityException',而不是'IOException'。 – skaffman

-3
try { 
    BufferedReader reader = new BufferedReader(new FileReader(FILE_NAME_REL_OR_ABSOLUTE)); 
    reader.readLine(); 
} catch (IOException e) { 

} catch (FileNotFoundException ex) { 

} 
+0

這將如何幫助? – skaffman

+1

不要鼓勵人們寫沒有內容的catch塊,特別是在處理I/O時。 – prunge

+0

@prunge我沒有寫任何內容,我正在寫它,以便他知道(在他不知道的情況下)在文件處理期間發生了什麼2 IO需要異常。甚至會有空白的try/catch的意義?我會剛剛完成catch(Exception e){}'如果我試圖做一個空的.... – Michael