我想获取我的应用程序的绝对路径,我正在使用以下代码:
String pathToSave = FacesContext.getCurrentInstance()
.getExternalContext().getRealPath("/");
结果是:
/home/ronaldo/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/Odontonew/
但我正在等待类似这样的东西:/home/ronaldo/workspace/Odontonew/
怎么了?
最佳答案
ExternalContext#getRealPath()
返回相对于 webapp 被部署的位置的路径,而不是 webapp 的开发位置,正如您似乎错误地期望的那样。
但是,变量名 pathToSave
表明了一个更大的问题:您似乎打算将文件保存在那里。这是一个坏主意,原因在以下答案中提到:Uploaded image only available after refreshing the page .简而言之,将它们保存到固定的本地磁盘文件系统路径。请注意,某些服务器提供了使此步骤更容易配置的方法,例如JBoss .
只需停止使用 getRealPath()
。你在现实世界中永远不需要它。在我开发 Java Web 应用程序的 10 年中(它在 ServletContext#getRealPath()
的幕后),该方法从来没有用过任何东西。完全忽略该方法。
另见:
关于java - 获取绝对路径jsf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18478825/