0

この手順を使用して、Java EE で実際のパスを取得したい場合:

String rootPath = getServletConfig().getServletContext().getRealPath("/");
System.out.println(rootPath);

結果は次のとおりです: C:\Users\saad\Desktop\pds.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Metier\

そして通常、私はこの結果を得る必要があります:

C:\Users\saad\Desktop\pds\Metier\

誰か助けてくれませんか?

4

2 に答える 2

2

これは、「アプリケーションに関連するファイルシステム パス」という概念がサーブレットで実際に意味をなさない理由の優れた例です。サーブレットがコンテナにデプロイされた場合、それが実際のファイル システムの場所にあるという保証はありません。サーブレット コンテナーは、展開せずに .war ファイルから直接実行するか、従来のファイル システムによってまったくサポートされていない URL からアプリケーション コードを読み取ることを選択できます。

あなたの場合、戻ってきた長いパスは、Eclipse がアプリケーションをデプロイした場所です。そのパスは、そのコンテキストでは 100% 正しかったです。その場所のファイルシステムを見ると、アプリケーションのコピーが見つかりますが、期待していたものではないことは明らかです。

一般に、パスが存在しない可能性があるため、アプリケーションに関連するファイル パスを移植可能に参照することはできません。

于 2013-03-25T00:34:08.930 に答える