我有一个应用程序在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
了。
还有其他人遇到过这个吗?
答案 0 :(得分:2)
是的,我也遇到过它。我怀疑这是对Tomcat 8中servlet规范的一个更严格的实现,而不是7.javadocs here似乎表明path参数应该是一个URL片段,这意味着它必须使用正斜杠,不是反斜杠,这是在Windows环境中使用File.separator时获得的。
答案 1 :(得分:0)
这取决于您的Apache Tomcat 8的版本。
我发现方法中的反斜杠getRealPath()适用于最新的Tomcat,但它不适用于8.0.29之前的版本。