我无法从Servlet(Java EE)获得真正的路径

时间:2013-03-25 00:18:38

标签: java tomcat absolute-path realpath

当我想在Java EE中获得真正的路径时,请使用以下说明:

String rootPath = getServletConfig().getServletContext().getRealPath("/");
System.out.println(rootPath);

结果是: C:\ Users \用户Saad的\桌面\ pds.metadata.plugins \ org.eclipse.wst.server.core \ TMP0 \ wtpwebapps \梅捷\

而且,我必须得到这个结果:

C:\用户\ Saad的\桌面\ PDS \梅捷\

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:2)

这是为什么“文件系统路径相对于应用程序”的概念在servlet中没有意义的一个很好的例子。将servlet部署到容器中时,无法保证它位于真实的文件系统位置。 servlet容器可以选择直接从.war文件执行它而不扩展它,或者它可以从一个完全没有传统文件系统支持的URL读取应用程序代码。

在您的情况下,您获得的长路径正是Eclipse部署应用程序的地方。该路径在该上下文中是100%正确的 ,因为如果您查看该位置的文件系统,您将找到应用程序的副本,但显然不是您所期望的。

通常,无法以可移植的方式引用与您的应用程序相关的任何文件路径,因为该路径可能不存在。

答案 1 :(得分:0)

Tomcat dir(tomcat / bin)的路径:

File inputFile = new File("file.xml"); // tomcat_dir/bin/file.xml

其他Tomcat目录的路径," webapps"例如:

File inputFile = new File("../webapps/file.xml"); // tomcat_dir/webapps/file.xml

摆脱绝对路径的好方法:)