我目前正在尝试从Java资源文件夹中加载资源。听起来很简单,我也这么认为,因为我已经在其他项目中完成了它。 我不久前从eclipse转换为IntelliJ Idea,并且自从eclipse以来没有使用资源加载。
我查看了各种各样的教程,并在这里查找了大量的Q / A,但它们似乎都不适合我(尽管它们使用的是我之前使用的完全相同的代码)。
我的设置:
我的代码结构如下: Project structure in IntelliJ
我的pom.xml的资源部分如下所示:
<build>
<plugins>
<plugin>
<artifactId>
maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>
com.test.Main</mainClass>
</manifest>
<manifestEntries>
<Class-Path>
.</Class-Path>
</manifestEntries>
</archive>
<descriptorRefs>
<descriptorRef>
jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>
make-assembly</id>
<phase>
package</phase>
<goals>
<goal>
single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<resources>
<resource>
<directory>
src/main/resources</directory>
<targetPath>
${project.build.directory}/resources/</targetPath>
<includes>
<include>
id_rsa</include>
</includes>
</resource>
</resources>
</build>
我使用此代码访问我的ssh密钥(我无法使用默认位置,相信我):
<build>
我怀疑资源文件夹所在的位置或我标记为源根目录的内容有问题。
P.S。:它没有使用
<plugins>
-------------- EDIT ---------------------
我的问题不是What is the difference between Class.getResource() and ClassLoader.getResource()?,我意识到了这些差异,尝试了两者并且两者都没有奏效。我的问题很简单,如果有人能够在我的项目中看到一些明显的错误,这些错误阻碍了一般资源的发现。
但仔细查看答案会使我怀疑项目的结构存在问题。我希望有人可以帮助我^^
祝你好运!
---------编辑#2 --------------------- 调试信息:
<plugin>
-------------------------解--------------------- ---------
事实证明,事实上,java放了一个&#34; file://&#34;在路径前面如果你调用this.getClass()。getResource(&#34; / id_rsa&#34;)。getFile()它会放一个&#34; /&#34;在路径前面。因此,它不适用于Windows,我不得不调用新的File(this.getClass()。getResource(&#34; / id_rsa&#34;)。getFile())。getAbsolutePath()来获取完整,正确的绝对值文件的路径。
感谢您的评论;)