小编典典

在Eclipse中将Java项目的资源(图像,数据文件等)存储在哪里?

java

不确定是否已经在SO上回答了这个基本问题。

从参考资料以及在SO上找到的答案,我了解到在Eclipse中,“源文件夹”是JDT用来搜索源文件并进行编译的文件夹。

还提到了每个源文件夹都可以有一个副本来存储编译的类。也许这就是为什么将项目通常的“ src”文件夹的内容编译为“
bin”文件夹的原因(在Eclipse中使用此类src / bin项目选项时)。

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


阅读 1186

收藏
2020-11-30

共1个答案

小编典典

这纯粹是常规的。您可以根据需要将它们全部存储在其中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

此外,如果要访问资源,则在类所在的Jar中访问该资源,则不应使用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 。

2020-11-30