我试图在传统上在WebSphere下运行的Tomcat 8下运行Java Web项目。一个servlet进行以下调用:Tomcat 8中的getServletContext()。getRealPath()返回错误的路径
xslFilePath = config.getServletContext().getRealPath(System.getProperty("file.separator") + "xsl");
config是ServletConfig的一个实例。
xsl位于项目内部,并部署为C:\ myproject \ build \ web \ xsl。当servlet试图引用位于xslFilePath中的文件时,我收到一个异常,表明Tomcat实际上正在寻找C:\ Program Files \ Apache Software Foundation \ Apache Tomcat 8.0.3 \ bin \ null中的xsl文件。显然这是错误的位置,没有发现任何东西。
不幸的是我无法更改代码,因为我无法访问源代码。所以我想知道这是否是Tomcat的预期行为?有没有任何Tomcat配置可以让我确保路径被引用到部署目录而不是Tomcat bin目录?选择一些其他的servlet容器是否可取?任何意见,将不胜感激。
这个答案是正确的,但它不只是使用错误的路径分隔符。先前版本的Tomcat允许getRealPath(“xsl”)根本没有初始分隔符,但Tomcat 8需要“/ xsl”(否则返回null)。这已经打破了我的一些个人web应用程序,其中大部分从Tomcat 5以来的未编译中幸存下来... – sam 2014-10-18 15:30:58