Java资源加载

时间:2017-10-12 12:57:15

标签: java maven intellij-idea resources

我目前正在尝试从Java资源文件夹中加载资源。听起来很简单,我也这么认为,因为我已经在其他项目中完成了它。 我不久前从eclipse转换为IntelliJ Idea,并且自从eclipse以来没有使用资源加载。

我查看了各种各样的教程,并在这里查找了大量的Q / A,但它们似乎都不适合我(尽管它们使用的是我之前使用的完全相同的代码)。

我的设置:

  • Maven 3.5.0
  • IntelliJ IDEA 2017.1.4
  • Java 1.8.0_131

我的代码结构如下: 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()来获取完整,正确的绝对值文件的路径。

感谢您的评论;)

0 个答案:

没有答案