2013-03-25 50 views
0

当我想获得Java EE中一个真正的路径,使用这个指令:我无法摆脱的Servlet(Java EE的)真实路径

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

结果是: C:\用户\萨阿德\桌面\ pds.metadata.plugins \ org.eclipse.wst.server.core \ TMP0 \ wtpwebapps \梅捷\

而且normaly,我一定要得到这样的结果:

C:\用户\ saad \ Desktop \ pds \ Metier \

任何人都可以帮助我吗?

回答

2

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

就你而言,你回来的漫长路径正是Eclipse部署应用程序的地方。在这种情况下,这条路径是100%正确的,因为如果您查看该位置的文件系统,您会发现应用程序的副本,但显然不是您期望的。

一般而言,由于路径可能不存在,因此不可移植地引用与您的应用程序相关的任何文件路径。

0

路径到Tomcat目录(Tomcat的/ bin中):

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

路径到其他Tomcat的目录中, “web应用”,例如:

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

好办法摆脱绝对路径: )