我正在尝试在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容器会更好吗?任何建议将不胜感激。
答案 0 :(得分:10)
使用getRealPath(" / xsl")。
getRealPath()的参数是一个虚拟路径'不幸的是,它是Java文档中使用的概念,但实际上并未在任何地方定义。它被假定为Web应用程序中资源的路径,在这种情况下,分隔符始终是' /'无论平台如何。