2009-08-27 11 views
2

私はクラスを使用してソースフォルダの下にプロパティファイルを取得しています。しかし、それは動作しません!確認した後、私は、デフォルトのパスを使用して見つけたGlassFishを使用したWebApplicationのファイルパス

File f = new File("/src/ss.properties"); 

は、Webアプリケーションのパスではなく、グラスフィッシュの設定パスです! "classes"パスに格納されたプロパティファイルを取得したい場合、私は何ができますか?通常、デフォルトのパスはプロジェクトパスです。

私はClassLoader.getResourceAsStream("sss")を使用しましたが、nullを返します。別のシンプルなJavaアプリケーションで試したので、ファイル名が正しいと確信しています。

更新

this.getClass().getClassLoader().getResourceAsStream("sectionMapping.properties"); 

代わりの

ClassLoader.getSystemResource("sectionMapping.properties") 

を使用したトリックをやりました!なぜだろう?

+0

私は自分の答えを更新しました。 –

答えて

5

getResourceAsStreamなどを使用してください。リソースへのアクセス方法については、this postを参照してください。 (これはGlassfishから独立しています。すべてのJava EEアプリケーションサーバーに適用されます)

this JavaWorld articleも参照してください。

更新:ファイルがsrc/ss.propertiesの場合は、WEB-INF/classesにコピーされていることを確認してください。その後、あなたは次のコードでそれにアクセスできるようにする必要があります(java.lang.Class方法を使用している場合、ノートスラッシュ)

InputStream propStream = ClassLoader.getResourceAsStream("ss.properties"); 

または

InputStream propStream = Class.getResourceAsStream("/ss.properties"); 

注完全なファイル名は、(.properties含みます拡張子)を使用する必要があります。

これらのいずれも動作しない場合は、でgetResourceAsStreamの呼び出しを置き換え、スローする例外の詳細を投稿してください。

関連する問題