3

我想获取我的应用程序的绝对路径,我正在使用下面的代码:

String pathToSave = FacesContext.getCurrentInstance()
                .getExternalContext().getRealPath("/");

结果是:

/home/ronaldo/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/Odontonew/

但我在等待类似的东西:/home/ronaldo/workspace/Odontonew/

怎么了 ?

4

1 回答 1

4

ExternalContext#getRealPath()返回相对于 webapp部署位置的路径,而不是 webapp 的开发位置,正如您错误地预期的那样。

但是,变量名表pathToSave明了一个更大的问题:您似乎打算在其中保存文件。由于以下答案中提到的原因,这是一个坏主意: Uploaded image only available after refresh the page。简而言之,将它们保存到固定的本地磁盘文件系统路径。请注意,某些服务器提供了使此步骤更易于配置的方法,例如JBoss

停止使用getRealPath(). 在现实世界中你永远不需要它。在我开发 Java Web 应用程序的 10 年中(它在幕后来自ServletContext#getRealPath()),该方法从未对任何事情有用。完全忽略该方法。

也可以看看:

于 2013-08-28T11:06:39.867 回答