我正在尝试访问我的java项目的另一个目录中的文件。
结构是这样的:
.
|-- resources
| |-- api
| | |-- data.json
|-- src
| |-- java
| | |-- .classpath
| | |-- pom.xml
| | |-- src
我的 java项目位于 ./src/java/
我的资源目录位于 ./resources/api/
我修改了.classpath
的{{1}},如此:
src/java/
我正试图通过以下方式访问资源:
<classpathentry kind="lib" path="./../../resources/api"/>
他们全都回归String filename = "data.json";
URL file_url = this.getClass().getClassLoader().getResource(filename);
System.out.println("URL IS "+file_url);
//outputs null
file_url = this.getClass().getResource(filename);
System.out.println("URL IS "+file_url);
//outputs null
InputStream in = this.getClass().getResourceAsStream(filename);
System.out.println("InputStream IS "+in);
//outputs null
file_url = this.getClass().getResource("/api/"+filename);
System.out.println("URL IS "+file_url);
//outputs null
file_url = this.getClass().getResource("api/"+filename);
System.out.println("URL IS "+file_url);
//outputs null
file_url = this.getClass().getResource("resources/api/"+filename);
System.out.println("URL IS "+file_url);
//outputs null
file_url = this.getClass().getResource("/resources/api/"+filename);
System.out.println("URL IS "+file_url);
//outputs null
file_url = this.getClass().getResource("./"+filename);
System.out.println("URL IS "+file_url);
//outputs null
file_url = this.getClass().getResource("/"+filename);
System.out.println("URL IS "+file_url);
。有人看到我在这里做错了吗?
==========================
非常愚蠢,但我只需要编辑我的Maven pom.xml,按照指示here将目录添加到类路径中。
我像这样更新了我的pom.xml:
null
显然 eclipse 使用<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<additionalClasspathElements>
<additionalClasspathElement>./../../resources/api/</additionalClasspathElement>
</additionalClasspathElements>
</configuration>
</plugin>
而 maven 使用.classpath
。
答案 0 :(得分:1)
也许魔术可以用:
getClass().getResource("/api/data.json");
或(基于使用)
getClass().getResourceAsStream("/api/data.json");