如何将包标记为资源文件夹?

gen*_*eek 12 intellij-idea

我有一个Intellij 12的目录结构:

   ...
   ...test
       - java
         - com.mycompany.myproject
           - package1 (contains code, etc,.)
           - resourcePackage (want to contain .json files but can't mark as a resource)
             - myOtherJunk.json
           - o o o
       - resources
         - aResource.json
Run Code Online (Sandbox Code Playgroud)

问题是,如果我右键单击我的包名(com.mycompany.myproject),我只能添加包而不是目录(如现有资源文件夹的目录).

但是,我不想将我现在要读取的.json文件的现有资源文件夹用于我的测试类.

所以,我需要一些东西来支持:

// this already works for the resources directory per the .json file but doesn't for the 
// myOtherJunk.json per the resourcePackage.
InputStream is = MyClassTest.class.getResourceAsStream("aResource.json");
Run Code Online (Sandbox Code Playgroud)

WeM*_*are 18

这可以通过几种方式解决.一个好的方法的例子是以下文件夹结构:

src
  main
     java
     resources
  test
     java
     resources
Run Code Online (Sandbox Code Playgroud)

完成后,将所有java类放在src/main/java/com.mycompany包下,将所有资源放在/src/main/resources/com/mycompany文件夹下.

要将它们链接在一起,请转到项目属性,然后找到"路径"选项卡.标记src/main/javasrc/main/resources作为源文件夹.(见随附的屏幕截图)路径选项卡

如果将它们链接在一起,您将能够使用getResourceAsStream()方法.如果你想知道为什么你应该使用下列文件夹结构-这是标准的Maven让事情整洁的方式.

  • @Funktik描述的"项目设置"菜单位于"文件"菜单下的"项目结构菜单"中(至少在IntelliJ 15中). (3认同)