小编典典

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

java

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

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

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

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


阅读 368

收藏
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并将所有资源复制到
arget/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