【问题标题】:Problems with relative paths in Eclipse.Eclipse 中的相对路径问题。
【发布时间】:2014-07-03 19:33:31
【问题描述】:

我正在尝试在 Eclipse 的动态 Web 项目中使用相对路径。我没有在 Servlet 中使用它们,而是在 Servlet 调用的另一个类中使用它们。我试图访问的文件是位于

中的属性文件

MyProject/WebContent/WEB-INF/propertyFile.properties

我已经尝试了几乎所有的相对路径...

WebContent/WEB-INF/propertyFile.properties 
/WebContent/WEB-INF/propertyFile.properties
./WebContent/WEB-INF/propertyFile.properties
MyProject/WebContent/WEB-INF/propertyFile.properties
/MyProject/WebContent/WEB-INF/propertyFile.properties
WEB-INF/propertyFile.properties
/WEB-INF/propertyFile.properties
./WEB-INF/propertyFile.properties

...等等...我该怎么办?

提前致谢!

【问题讨论】:

  • 我正在使用 Jboss 发布 Web 应用程序(我忘了评论)。

标签: eclipse path relative-path


【解决方案1】:

您需要了解文件 IO 从 文件系统 读取 files,并且相对于启动 JVM(即您的 Web 容器)的目录。

请记住,一旦您的应用部署到生产环境中,就不会有任何 MyProject 或 WebContent 文件夹。这就是您的开发机器上存在的内容。生产环境中唯一存在的就是部署在应用服务器中的 war 文件。

您真正想要的是加载一个资源,该资源位于已部署的 Web 应用程序中(即在您的 war 文件中)。

为此,您必须使用ServletContext.getResourceAsStream()

InputStream in = servletContext.getResourceAsStream("/WEB-INF/propertyFile.properties");

【讨论】:

  • 感谢您的建议,但是,正如我所说,我没有在 Servlet 中使用这些文件,因此,我无法使用 ServletContext。
  • 您只需将 servlet 上下文从 servlet 传递给 objectif
  • 好的,我会这样做的。谢谢。
  • 如果我需要的文件在“WebContent”中但不在“WEB-INF”中会怎样?
  • 您可以将路径更改为“/propertyFile.properties”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-18
  • 1970-01-01
  • 2014-05-09
  • 2016-01-08
  • 2011-04-29
  • 1970-01-01
  • 2015-08-14
相关资源
最近更新 更多