我在使用该getClass().getResource("filename.txt")
方法时遇到了问题。在阅读 Java 文档说明后,如果您的资源与您尝试从中访问资源的类不在同一个包中,那么您必须为其提供以'/'
. 推荐的策略是将您的资源文件放在根目录中的“资源”文件夹下。因此,例如,如果您具有以下结构:
src/main/com/mycompany/myapp
然后您可以按照 maven 的建议添加资源文件夹:
src/main/resources
此外,您可以在资源文件夹中添加子文件夹
src/main/resources/textfiles
并说你的文件被调用myfile.txt
所以你有
src/main/resources/textfiles/myfile.txt
现在这是愚蠢的路径问题出现的地方。假设您的 中有一个类com.mycompany.myapp package
,并且您想myfile.txt
从资源文件夹中访问该文件。有人说你需要提供:
"/main/resources/textfiles/myfile.txt" path
或者
"/resources/textfiles/myfile.txt"
这两个都是错误的。运行后mvn clean compile
,文件和文件夹被复制到:
myapp/target/classes
文件夹。但是资源文件夹不存在,只有资源文件夹中的文件夹。所以你有了:
myapp/target/classes/textfiles/myfile.txt
myapp/target/classes/com/mycompany/myapp/*
所以给予该getClass().getResource("")
方法的正确路径是:
"/textfiles/myfile.txt"
这里是:
getClass().getResource("/textfiles/myfile.txt")
这将不再返回 null,而是返回您的类。我希望这对某人有所帮助。我很奇怪,该"resources"
文件夹也没有被复制,而只是文件夹中的子文件夹和文件"resources"
。在我看来,该"resources"
文件夹也可以在下面找到"myapp/target/classes"