Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我能';无法从Servlet(JavaEE)获取实际路径_Java_Tomcat_Absolute Path_Realpath - Fatal编程技术网

我能';无法从Servlet(JavaEE)获取实际路径

我能';无法从Servlet(JavaEE)获取实际路径,java,tomcat,absolute-path,realpath,Java,Tomcat,Absolute Path,Realpath,当我想在Java EE中获得真实路径时,请使用以下说明: String rootPath = getServletConfig().getServletContext().getRealPath("/"); System.out.println(rootPath); 结果是: C:\Users\saad\Desktop\pds.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Metier\ 通常,我必须得到这个结果: C

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

String rootPath = getServletConfig().getServletContext().getRealPath("/");
System.out.println(rootPath);
结果是: C:\Users\saad\Desktop\pds.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Metier\

通常,我必须得到这个结果:

C:\Users\saad\Desktop\pds\Metier\


有人能帮我吗?

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

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

一般来说,由于路径可能不存在,因此无法以可移植方式引用与应用程序相关的任何文件路径。

Tomcat dir的路径(Tomcat/bin):

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

File inputFile = new File("../webapps/file.xml"); // tomcat_dir/webapps/file.xml
摆脱绝对路径的好方法:)

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