2016-04-08 13 views
3

EclipseとJava 8でTomcat 7を使用して動的なWebモジュールを作成していますが、ビルドパスに必要なJAVAプロジェクトでは、 (辞書、辞書など):JAVAでファイルパスを取得するためにClassLoader.getSystemResourceを使用する

String filePath = "conf/test.txt"; // my test file is in WEB-INF/conf 
String absolutePath = ClassLoader.getSystemResource(filePath).getPath(); 

私はそれがファイルを見つけることができないようになっています。問題はある

String absolutePath = new File(filePath).getAbsolutePath(); 

私はClassLoader.getSystemResourceを使用するために必要なのです、次を使用している場合

、それはファイルを検索します。ヌルポインタを取得せずにファイルのパスを指定するにはどうすればよいですか(絶対パスも使用しません)。

+0

を以下を使用しますか? – Ducaz035

+0

ビルドパスで他の開発者が書いたいくつかのプロジェクトを使用しています。そのため、すべての方法でファイルがロードされます。 –

答えて

1

問題は、プログラムを起動するために使用されているので、tomcatなどのWebコンテナ内のリソースを検索しようとすると、これは動作しません。私があなただったらあなたは、具体的#getsystemResource()を使用する必要がないのはなぜ

、私はちょうど、

this.getClass().getResource(“/top.txt”) 
-2

以下を使用してください。
文字列tempPath =新しいファイル( "")。getAbsolutePath();
文字列filePath = tempPath + "conf/test.txt";

使用ClassLoader.getResource()および以下の説明がある...

のClassLoader :: getSystemResourceは()システムクラスローダを使用しています。これは、プログラムの起動に使用されたクラスパスを使用します。 tomcatのようなWebコンテナにいる場合は、WARファイルからリソースを取得しません。

クラス< T> .getResource()は、リソース名にクラスのパッケージ名を付加し、そのクラスローダに委譲します。クラスをミラーリングするパッケージ階層にリソースが格納されている場合は、このメソッドを使用します。

ClassLoader.getResource()は親クラスローダーに委譲します。これは最終的に、システムクラスローダまでのすべての方法でリソースを検索します。

+0

質問は、ClassLoader.getSystemResourceを使用してファイルを見つける方法です。 –

+0

私の答えを編集しました。確認してください。 – Gaurav

関連する問題