2011-07-18 9 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プロセスを実行するユーザーがfoo.cerを読み取れるように/ home/testにrxアクセスできることを確認する必要があります – Kal

答えて

1

アプリケーションサーバーのクラスパスに.cerファイルの場所を含め、ClassLoaderのgetResourceAsStream(String location)メソッドをロードすることをお勧めします。あなたがクラスパスにディレクトリ/home/testを追加した場合は

することは、適切なコードは次のようになります。

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

私は、これがアプリケーションサーバーで実行されている場合は、外部リソースをロードするはるかに信頼性の高い方法であることが判明し、それに加えてきましたテストをはるかに簡単にします。

+1

既存の方法*は、奇妙なセキュリティのことが起こっている。 – skaffman

+0

確かに、私はセキュリティの問題がFileNotFoundExceptionとは違って現れることを期待しています - あなたは@skaffmanの前にそれを見たことがありますか? – Brabster

+0

ええ、あなたは一般に 'IOException'ではなく' SecurityException'を取得します。 – 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

特にI/Oを扱うときに、内容のないこのようなcatchブロックを書くことを人々に勧めないでください。 – prunge

+0

@prunge私はコンテンツを書いていないので、ファイル処理中に2 IOで必要な例外が何であるかを知っているように書いていました。何がtry/catchの空を持っているのでしょうか?私はちょうど 'catch(Exception e){}'をしたいと思います。空の場合は.... – Michael

関連する問題