在 IntelliJ for Maven 项目中添加资源

2022-09-01 00:00:49

我有一个这样的项目结构:

src
 |-main
    |-java
       |-com.abc.xyz
          |-Login.java

我必须添加一个资源文件并读取资源

InputStream is = getClass().getResourceAsStream("launchers.properties");

这给出了空值。

在Intellij中,我无法在for文件夹下添加新包,以使项目结构看起来像这样。如何将资源文件加载到项目中?src/mainresourceslaunchers.properties

src
 |-main
    |-java
       |-com.abc.xyz
          |-Login.java
    |-resources
       |-com.abc.xyz
          |-Login
             |-launcher.properties

我尝试了@maba建议的解决方案,但仍然不起作用


答案 1

不应位于名为 的文件夹下。它应该直接放在文件夹中。launcher.propertiesLoginsrc/main/resources/com/abc/xyz


它真的像我说的一样简单,但如果资源文件夹没有标记为源文件夹,那么这可能是问题所在。

这是初始类和设置:

enter image description here

现在创建资源文件夹:

enter image description here

enter image description here

这个新创建的文件夹应该自动标记为源文件夹,如果它是蓝色标记的,那么它就是。否则,您必须手动标记它:

enter image description here

现在,您将能够向其添加程序包:

enter image description here

enter image description here

现在,您可以将文件添加到其中:

enter image description here

enter image description here

重新运行应用程序不会给你任何价值:null

enter image description here

包视图肯定会显示该文件:launchers.properties

enter image description here


答案 2

正如@maba所指出的,属性文件应与类位于同一包中,以便代码正常工作。

因此,您应该有两个文件:

  • src/main/java/com/abc/xyz/Login.java
  • src/main/resources/com/abc/xyz/launcher.properties

如果 IntelliJ 显示资源,是否在问题旁边。您需要做的是检查结果是否包含在目标工件中。

在IntelliJ中做一个,用你喜欢的ZIP查看器打开生成的WAR/JAR/EAR,然后浏览到“com/abc/xyz”文件夹。您应该在那里看到这两个文件。build all

  • 如果是,则表示您在代码中做错了什么。检查拼写错误,特别是结尾或开头的点和空格(例如“launcher.properties[space]”),复制/粘贴文件名以确保
  • 如果它们不存在,则您的IntelliJ设置是错误的。资源不会包含在目标生成中。在线查看教程了解如何使用IntelliJ想法执行此操作。

推荐