1

Eclipse IDE に Java プロジェクトがあります。新しい File オブジェクトを作成した場合。のようにFile file = new File("someFile.txt")。プロジェクトのホームに someFile.txt が存在することが期待されます。そして、それを次のようなディレクトリに配置し、config/someFile.txt これを新しいファイルコンストラクターで使用できます。ここで大丈夫です。

このプロジェクトの JAR を作成し、WEB-INF/lib に配置すると、. 次に、new File("someFile.txt")コードは TOMCAT_HOME/bin にあるファイルを予期します。で確認しましたfile.getAbsolutePath();。それは私の手に負えません。私の質問は、Java Web アプリケーションで new File が bin ディレクターにあると予想される理由です。プロジェクトホームではないのはなぜですか。構成ディレクトリに簡単に移動できるようにします。ナビすら../../動かない。それらが追加されTOMCAT_HOME/bin/../../someFile.txt、ファイルが存在しない原因となるためです。

私の問題をうまく説明できたことを願っています。

4

1 に答える 1

5

TOMCAT_HOME/binは JVM プロセスの作業ディレクトリであるため、すべての相対パスはそのディレクトリに対して相対的に解決されます。

Web アプリケーションで相対ファイル パスを使用しないこと以外に、できることはあまりありません。さらに良いのはServletContext.getRealPath()、 またはを使用することClass.getResourceAsStream()です。

于 2012-04-24T11:53:46.933 に答える