【问题标题】:Eclipse adds an exclusion pattern of ** to src/main/resources: how to read a resource file?Eclipse 在 src/main/resources 中添加 ** 的排除模式:如何读取资源文件?
【发布时间】:2018-03-18 19:10:30
【问题描述】:

我使用 Eclipse(Oxygen.2 Release (4.7.2))和标准 src/main/resources 文件夹创建了一个简单的 Maven 项目,并将其添加到类路径中。问题是 Eclipse 在 src/main/resources 文件夹中添加了一个排除模式 **。这里有一些图片可以更好地说明情况:

你可以自己重现这种情况,只要记住运行 Maven -> 更新项目...

根据this 的回答,这不是错误,而是正确的行为。

所以问题是:如何从 src/main/resources 中读取资源文件?

我不能使用显式路径 src/main/resources,因为在编译结果中不会有这样的路径,并且 我不能使用 .getResource 或 .getResourceAsStream 因为 Eclipse 设置了一个排除模式 @987654327 @在那条路径上

【问题讨论】:

  • 你试过用getResourcesAsStream().吗?
  • Eclipse Maven 插件在 src/main/resources 上放置了 ** 的类路径排除模式,因此 getResource 方法找不到这些文件。
  • 对不起,我有点无知..但是你有像测试一样运行代码吗?使用this.getClass().getResourcesAsStream("/test-resources.txt")之类的东西?此外,您是否检查过普通命令行?在没有 Eclipse 的情况下运行测试?
  • @Luke 你真的试过吗?因为我做到了,而且它有效。 getResource(...)getResourceAsStream(...) 在 Eclipse/Maven 项目中适用于 src/main/resources。资源复制由 m2e 处理。
  • @Luke 排除模式不是问题。检查您的target/classes 目录,您的资源将在那里。

标签: java eclipse maven resources m2eclipse


【解决方案1】:

我写这个答案以防其他人有同样的问题。

我发现 Eclipse 中 src/main/resource 文件夹中的排除模式是正常的(参见上面链接的答案)。排除意味着不是 Eclipse 处理 src/main/resources 文件夹编译,而是 Maven(准确地说是 Eclipse 的 Maven 插件,M2Eclipse)。在类路径中找不到这些资源的事实是由于 pom.xml 中存在排除项:

<resource>
    <directory>src/main/resources</directory>
    <excludes>
        <!-- these resources will be excluded from the classpath; they will not go in to the target/classes folder and will not be packaged into the artifact -->
        <exclude>**/*</exclude>
    </excludes>
</resource>

【讨论】:

    【解决方案2】:

    步骤 1. 从 eclipse 中删除项目步骤 2. 重新导入项目步骤 3. 转到需要添加为源文件夹的文件夹。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-26
      • 2020-09-13
      • 1970-01-01
      • 2015-09-16
      • 2020-07-24
      • 1970-01-01
      • 2016-05-11
      相关资源
      最近更新 更多