我正在嘗試訪問另一個目錄中的文件外部我的java項目。使用Maven將文件夾添加到Java項目之外的類路徑
的結構是這樣的:
.
|-- resources
| |-- api
| | |-- data.json
|-- src
| |-- java
| | |-- .classpath
| | |-- pom.xml
| | |-- src
我Java項目位於./src/java/
我資源目錄位於./resources/api/
我已經修改的像這樣:
<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);
他們都返回null
。任何人看到我在這裏做錯了什麼?
==========================
SOLUTION
非常愚蠢的,但我只需要修改我的Maven pom.xml將該目錄添加到類路徑中,如指示here。
我更新了我的pom.xml這樣的:
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<additionalClasspathElements>
<additionalClasspathElement>./../../resources/api/</additionalClasspathElement>
</additionalClasspathElements>
</configuration>
</plugin>
顯然日食使用.classpath
和行家使用pom.xml
。
如果你正在使用Maven,爲您的生產源文件夾應該是'SRC/main/java',而不是'src/java',如你的問題所示。 – JimHawkins