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

min*_*ins 1 java eclipse directory resources

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

从SO上的参考和答案中我了解到,在Eclipse中,"源文件夹"是JDT将搜索源文件并编译它们的文件夹.

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

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

NoD*_*und 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());
  }
}
Run Code Online (Sandbox Code Playgroud)

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