3

Tomcat の 6 および 7 と SDK の 6 および 7 を使用して、Windows と Linux の両方で正常に動作するアプリケーションがあります。

public static final String THEME_DIRECTORY = File.separator + "WEB-INF"
                                                + File.separator + "theme"
String realPath = servletContext.getRealPath(requiredPath);

としてrealPath戻りますnull。次のことが真であることがわかります。

  • requiredPath「\WEB-INF\テーマ」です。
  • File.separatorは '\';
  • requiredPath「/WEB-INF/theme」に設定されている場合、realPath期待どおりに戻ります。

どうやら挙動が変わって使えなくなってしまったようFile.separatorです。

他の誰かがこれに遭遇しましたか?

4

2 に答える 2

2

はい、私も遭遇しました。これは、Tomcat 7 とは対照的に、Tomcat 8 のサーブレット仕様のより厳密な実装であると思われます。ここの javadocsは、path パラメータが URL フラグメントであると想定されていることを示しているようです。つまり、バックスラッシュではなく、スラッシュを使用する必要があります。 Windows 環境で File.separator を使用すると得られるものです。

于 2014-09-12T20:48:24.713 に答える
0

Apache Tomcat 8 のバージョンによって異なります。

メソッド getRealPath() のバックスラッシュは最新の Tomcat では機能することがわかりましたが、8.0.29 より前のバージョンでは機能しません。

于 2016-10-12T08:56:00.353 に答える