Я пытаюсь сделать доступ к файлу в другом каталоге за пределами мой проект java.Добавить папку в classpath за пределами проекта java, используя Maven
структура такова:
.
|-- resources
| |-- api
| | |-- data.json
|-- src
| |-- java
| | |-- .classpath
| | |-- pom.xml
| | |-- src
Мой Проект Java расположен в ./src/java/
Мой каталог ресурсов находится в ./resources/api/
Я изменил .classpath
из 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);
Все они возвращаются null
. Кто-нибудь видит что-то, что я сделал не так?
==========================
РЕШЕНИЕ
Довольно глупо, но мне просто нужно, чтобы изменить свой Maven pom.xml, чтобы добавить каталог в путь к классам, как указано here.
Я обновил свой pom.xml так:
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<additionalClasspathElements>
<additionalClasspathElement>./../../resources/api/</additionalClasspathElement>
</additionalClasspathElements>
</configuration>
</plugin>
Видимо затмение использует .classpath
и Maven использует pom.xml
.
, если вы работаете с Maven, папка для источников производства должны быть 'SRC/main/java', а не 'src/java', как показано в вашем вопросе. – JimHawkins