不确定这个基本问题是否已经得到解答。
从参考资料以及在SO上找到的答案,我了解到在Eclipse中,“源文件夹”是JDT将搜索源文件并编译它们的文件夹。
还提到每个源文件夹可能有一个对应的文件夹来存储已编译的类。也许这就是为什么项目的通常“src”文件夹的内容被编译到“bin”文件夹中(在 Eclipse 中使用此类 src/bin 项目选项时)。
Question:存储其他非源文件的位置,例如图标、安全策略还是数据文件?我猜这是在“常规”文件夹中,但在项目层次结构中的哪个级别(通常)?是否可以将其放入源文件夹中(我们为什么要这样做)?编译后会发生什么,或者导出到 .jar 文件,在什么情况下将文件复制到 .jar 中?相对路径是否保留?
这纯粹是传统的。您可以将它们全部存储在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("...")
or Paths.get(...)
but 获取资源作为流或其对应物获取资源:
try (Scanner scanner = new Scanner(MyClass.class.getResourceAsStream("/myfile.txt"))) {
while (scanner.hasNextLine()) {
System.out.println(scanner.nextLine());
}
}
这可能会抛出一个 NPE 如果/myfile.txt
没找到。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)