2016-07-11 19 views
0

私は2つのMavenプロジェクトを得た:にFileNotFoundException後の展開にTomcatの

  1. そのコード
  2. JARを使用してRESTfulなサービスを持っているWARからアクセスするリソースファイルとJAR

JARユニットテストを実行すると、リソースファイルにアクセスできます。

は、Tomcatにデプロイした後、リソースファイルへのアクセスは、私はこれらの行が、同じ結果の両方試してみましたFileNotFoundExceptionを

で失敗します。

File file = new File(getClass().getClassLoader().getResource("file.xml").getFile()); 

そして

File file = new File(getClass().getResource("/file.xml").getFile()); 

デバッグ、私はfileの値が以下の通りであることを発見しました:

file:/usr/share/tomcat8/webapps/ROOT/WEB-INF/lib/com.projectgroup.projectname-1.0-SNAPSHOT.jar!/file.xml 

私はその場所でJARを開いてファイルを見つけました。だから、なぜこれが起こっているのかわかりません。

+1

ファイルは、オペレーティング・システム・ファイルのためのものです。 jarファイル内で圧縮されたものは、InputStreamに対してgetClassLoader()。getResourceAsStreamを使用するだけです。 –

答えて

1

あなたのxmlファイルをクラスパスにロードされますするもう一つの方法は、以下のように春のフレームワークを使用することですresource.getFile()

getResourceAsStream() insteedを使用してみてください:

PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); 
resolver.getResources("classpath*:your/package/**/file.xml"); 
+0

は 'resource.getInputStream'を見つけることができませんでしたが、代わりに' getClass()。getResourceAsStream'を使用しました。私は 'getFile'がなぜうまくいかなかったのかまだ分かりません。とにかくありがとう – Bishoy

+1

resource.getInputStream()はエラーです。私はgetResourceAsStream()を書きたいと思います。私は答えを訂正します。 –

0

あなたのファイルはwarファイルのクラスパスになければなりません。ビルドプロセスの一部としてwarにパックされていますか?

+0

私はmavenを使用していますが、ファイルがJARにパッケージされていることを確認しました – Bishoy

+0

Mavenを使用している場合、リソースファイルはJAR内のメインWAR – Bishoy

+0

の依存ファイルですmain/resourcesディレクトリにアクセスしようとしています – David

関連する問題