【问题标题】:How can my project access its "resources" directory both when run in Eclipse and from a Maven-packaged jar file?在 Eclipse 和 Maven 打包的 jar 文件中运行时,我的项目如何访问其“资源”目录?
【发布时间】:2011-08-17 15:36:41
【问题描述】:

我正在 Eclipse 中使用 Maven 项目(借助 m2e 插件)。当我将项目打包成 jar 文件(mvn install)时,“资源”中的所有文件都位于 jar 的根目录中。

因此,在我的程序中,我应该只使用裸文件名:

File file = new File("foo.txt");

但是当我通过 Eclipse 构建和运行我的项目时,我必须使用文件的相对路径:

File file = new File("src/main/resources/foo.txt");

我应该怎么做才能解决这个问题?

【问题讨论】:

标签: eclipse maven resources m2e


【解决方案1】:

要访问程序的资源,请勿使用FileFileInputStream 和类似的类。 它们不适用于 jar 文件中的任何内容。

请改用Foo.class.getResource(...).getResourceAsStream() 来访问您的资源。 (在这样做之前请阅读文档。)

我不确定从 eclipse 启动的程序是否可以访问这些 - 请尝试并报告!

【讨论】:

  • 是的,从 Eclipse 或从 JAR 文件启动的程序可以访问它们,只要它们位于 CLASSPATH 中,即在 src/main/resources 目录中。
  • 是的,它在 Eclipse 中工作。但有一个细节:m2e 插件从类路径中排除 src/main/resources(此问题描述为 there)。因此,您应该从 .classpath 文件中删除一行,一切都会正常进行。谢谢!
【解决方案2】:

您在 Eclipse 中的包配置错误,因为它将 src/main/resources 视为包而不是源文件夹。

Eclipse 中的配置必须如下所示:

【讨论】:

  • 当我将 src/main/resources 包含到类路径中时 - 它没有帮助
猜你喜欢
  • 2019-05-18
  • 2012-02-21
  • 2014-11-22
  • 1970-01-01
  • 2013-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多