2016-05-01 8 views
0

私はこれを作ったマシン上で正常に動作していたEclipseでmaven web-appプロジェクトを作成しました。classLoader.getResource.getResource(fileName).getFile()を使用してファイルを取得できません

例外:D:\ Eclipseの%20Workspace.metadata.plugins \ org.eclipse.wst.server.core \ TMP0日食に他のマシンにこのプロジェクトをインポートするとき、それは私にファイルを取得する際に、この例外を与えます

public File getFile (String fileName) { 
    //Get file from resources folder 
    ClassLoader classLoader = getClass().getClassLoader(); 
    File file = new File(classLoader.getResource(fileName).getFile()); 
    return file; 
} 

ファイルされる:\私は、ファイルを取得するには、このコードを使用していますfile.txtを (システムは指定されたパスを見つけることができません)

\ \例\ WEB-INF \クラスをwtpwebappsプロジェクトのresourcesフォルダに:

D:\ Eclipseのワークスペース\心理分析\例\ SRC \メイン\リソース

は、私はパスを示す例外メッセージを移動して、ファイルがすでに存在してきていることがわかりました。

答えて

0

コードは、このコードクラスが常駐するのと同じディレクトリにあるファイルを探しています。このコードのパッケージ構造は何ですか? また、Mavenだけがリソースをクラスパスにコピーします。したがって、Eclipseを使用してコンパイルして実行すると、resourcesフォルダは自動的にコピーされません。

1

getFile URL の方法はありません URLをファイルに変換します。ホストとポートの後のURLの部分を返します。 URLはスペースを含む多くの文字をパーセントでエスケープする必要があるため、URLのパス部分をファイル名として確実に使用することはできません。実際には、例外はあなたに正確に伝えています:あなたのコンピュータにD:\Eclipse%20Workspace.metadata.pluginsという名前のディレクトリはありません。 (先に行くとチェック。)

をあなたはURLを持っている場合、あなたは、すべてのファイルに変換しようとするべきではありません。あなたはする必要はありません。 URLのopenStream methodを使用して、ファイルと同じように簡単にURLから読むことができます。

しかし、あなたはまた、完全にURLをスキップして、読みやすいInputStreamを取得するためにgetResourceAsStreamメソッドを使用することができますので、でもそれは、必要ありません。

InputStream stream = getClass().getResourceAsStream("/file.txt"); 
関連する問題