3 回答
TA贡献2011条经验 获得超2个赞
我在使用该getClass().getResource("filename.txt")方法时遇到问题。阅读Java文档说明后,如果您的资源与尝试从中访问资源的类不在同一个包中,则必须给它相对路径,以开头'/'。推荐的策略是将资源文件放在根目录下的“ resources”文件夹下。因此,例如,如果您具有以下结构:
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"
添加回答
举报