【问题标题】:Maven resource folderMaven资源文件夹
【发布时间】:2016-07-14 16:59:38
【问题描述】:

嘿, 我想在 Maven 项目中获取资源文件夹(例如:C:\Users\Raul\workspace\Serial\src\test\resources),但每次运行此 java 代码时:

System.out.println(getClass().getResource("").getPath());

它返回给我这个路径:C:/Users/Raul/workspace/Serial/target/test-classes/

我上次使用 Maven 时就是这样工作的,我没有做任何更改。 提前谢谢。

【问题讨论】:

  • 资源不是(必然)文件系统条目。不要这样使用它们。
  • 程序应该从那里创建、修改和删除文件。
  • 确实不应该。不要将您的开发环境与您的运行时环境混为一谈。
  • 我在另一个项目中使用了相同的方法,效果很好。这里是 github 链接:github.com/Raul-Vasi/EbookConverter

标签: java maven


【解决方案1】:

通过典型设置,Maven 将资源复制到target/classes(或target/test-classes)目录。此外,target/classes(或target/test-classes)目录被添加到类路径中。

如果您有一个文件src/test/resources/foo.txt,那么您将使用getResource("/foo.txt") 访问该文件。

一般来说,您不希望您的代码引用源文件夹来访问资源。资源可能被放置在多个位置,并且“过滤”资源是很常见的(用构建属性值替换标记)。在过滤的情况下,您绝对不希望处理的资源文件在源目录中。

【讨论】:

  • 谢谢。如果我必须从 jar 文件中写入和读取文件(普通用户不可见),我现在该怎么做?
  • @RaulVasi 我最近没有尝试过,但我相信类路径中任何 jar 中的任何文件都可以使用getResource() 获得。如果 bar.jar 在顶层包含一个名为 foo.txt 的文件,那么我相信您可以说 `getResource("/foo.txt") 并获取该文件,无论它是在 jar 中还是直接在类路径上。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-16
  • 1970-01-01
  • 2017-10-17
  • 1970-01-01
相关资源
最近更新 更多