Tomcat 8中的getServletContext()。getRealPath()返回错误的路径

时间:2014-08-28 18:24:46

标签: java tomcat servlets servletconfig

我正在尝试在Tomcat 8下运行一个传统上在WebSphere下运行的Java Web项目。一个servlet进行以下调用:

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容器会更好吗?任何建议将不胜感激。

1 个答案:

答案 0 :(得分:10)

使用getRealPath(" / xsl")。

getRealPath()的参数是一个虚拟路径'不幸的是,它是Java文档中使用的概念,但实际上并未在任何地方定义。它被假定为Web应用程序中资源的路径,在这种情况下,分隔符始终是' /'无论平台如何。