在Eclipse中为Java项目存储资源的位置(图像,数据文件......)?

时间:2014-09-07 16:38:06

标签: java eclipse resources directory

不确定这个基本问题是否已在SO上得到解答。

从参考文献和SO上的答案,我明白在Eclipse中有一个"源文件夹"是JDT将搜索源文件并编译它们的文件夹。

还提到每个源文件夹可以具有存储编译类的对应物。也许这就是为什么通常" src"的内容。项目的文件夹被编译成" bin"文件夹(在Eclipse中使用这样的src / bin项目选项时)。

问题:存储其他非源文件的位置,例如图标,安全策略或数据文件?我想这是一个"常规"文件夹,但在项目层次结构中的哪个级别(通常)?是否可以将它放在源文件夹中(为什么我们这样做)?编译或导出到.jar文件后会发生什么情况,在哪些条件下复制的文件是.jar?是否保留了相对路径?

1 个答案:

答案 0 :(得分:6)

这纯粹是传统的。如果需要,您可以将它们全部存储在src中。

但是,如果你想坚持使用Maven或Gradle约定,那么你应该有类似的东西:

  • src/main/java:主要源文件,将被编译然后分发(jar等)
  • src/main/resources:主要资源,已分发。
  • src/test/java:测试源文件,又名Junit测试
  • src/test/resources:测试资源。

Maven会将所有Java编译成target/classes并将所有资源复制到target/classes。对于测试,它将是target/test-classes

此外,如果您想要访问资源,那就是您的课程所在的资源,您不应该使用new File("...")Paths.get(...),而是getResourcesAsStream或其对应getResource }:

try (Scanner scanner = new Scanner(MyClass.class.getResourceAsStream("/myfile.txt"))) {
  while (scanner.hasNextLine()) {
    System.out.println(scanner.nextLine());
  }
}

如果找不到/myfile.txt,这可能会引发NPE。