使用Maven将文件夹添加到java项目之外的classpath

时间:2016-10-18 22:51:33

标签: java maven classpath

我正在尝试访问我的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

1 个答案:

答案 0 :(得分:1)

也许魔术可以用:

getClass().getResource("/api/data.json");

或(基于使用)

 getClass().getResourceAsStream("/api/data.json");