我真的花了3个小时来处理这个愚蠢的问题,而且我已经看了遍历stackoverflow,似乎没有人有这个特定的答案(我能找到)。
我会尽量简明扼要地解释我的问题。 首先,我使用IntelliJ作为我的IDE。
这是我的文件夹结构:
Utilities
|-----RandomFolder
|-----RandomFolder
`-----Java
|
`--MavenProjectFolder
|----src/main/
| |----java/Main.java
| `---resources/test.json
`---pom.xml
请注意,此结构中的随机文件夹并不重要。
在这个结构中,Main.java是一个包含public static void main()
函数的简单文件,我在其中试图读取test.json
文件,如下所示:
File jsonFile = new File("/test.json")
。
现在我知道在maven编译我的项目之后,它应该将所有内容放在我的根文件路径中的resources文件夹中(除非我遗漏了一些东西)我想到了我尝试在json文件中读取的语句应该没有问题,但我一直得到file not found exception
。
在尝试了一些其他的事情后,我试图最终将json文件放在Utilities
文件夹的根目录中,因为运行System.out.println(System.getProperty("user.dir"));
似乎表明该项目正在使用Utilities
作为根目录目录,似乎有点工作。
现在我的问题是,我怎么能得到我的maven项目(它应该与包含它的父文件夹完全无关)从它自己的根目录中读取文件(结构呢)在编译项目时创建)?
我已经验证了test.json
文件确实在项目编译时被复制到classes文件夹中,但File jsonFile = new File("test.json")
仍然继续给我一个file not found exception
。
答案 0 :(得分:0)
我找到了自己问题的答案:
File jsonFile = new File(Main.class.getResource("test.json").toURI())
似乎从maven编译的类路径中获取文件。