SDK8和Tomcat 8上的sc.getRealPath(。)和File.seperator

时间:2014-08-10 09:38:39

标签: java tomcat sdk tomcat8

我有一个应用程序在Windows和Linux上运行良好,使用Tomcat的6和7以及SDK 6和7.我设置了SDK 8和Tomcat 8,当应用程序运行时,它现在扼流圈于:

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

realPath返回null。事实证明,以下情况属实:

  • requiredPath是' \ WEB-INF \ theme';
  • File.separator是' \';
  • 如果requiredPath设置为' / WEB-INF / theme'然后我按照我的预期得到了realPath

似乎行为已经改变,我不能再使用File.separator了。

还有其他人遇到过这个吗?

2 个答案:

答案 0 :(得分:2)

是的,我也遇到过它。我怀疑这是对Tomcat 8中servlet规范的一个更严格的实现,而不是7.javadocs here似乎表明path参数应该是一个URL片段,这意味着它必须使用正斜杠,不是反斜杠,这是在Windows环境中使用File.separator时获得的。

答案 1 :(得分:0)

这取决于您的Apache Tomcat 8的版本。

我发现方法中的反斜杠getRealPath()适用于最新的Tomcat,但它不适用于8.0.29之前的版本。