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

时间:2014-02-12 08:41:36

标签: 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

问题是如果我右键单击我的包名(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");

2 个答案:

答案 0 :(得分:16)

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

src
  main
     java
     resources
  test
     java
     resources

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

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

如果将它们链接在一起,您将能够使用getResourceAsStream()方法。 如果您想知道为什么要使用以下文件夹结构 - 这是保持干净整洁的标准maven方式。

答案 1 :(得分:2)

创建目录

当您要求她创建包时,Intellij会创建目录。这不是错误。

如果你创建包“com”,它将创建dir“com”,如果你在那里创建一个源文件,它会认为该文件在包“com”中。

如果你创建包“com.next.pack”,它将创建三个嵌套目录“com”,然后“next”,然后“pack”,如果你在那里创建一个源文件,它会认为该文件在包“com.next.pack”中。

目录结构

仅将源根目录下的路径作为包。任何目录都可以设置为源根目录。

资源根

几乎任何目录结构。其中的某个地方有资源的根目录。右键单击它并将目录标记为...资源根目录。

请注意,相同的方法可用于测试和测试类的目录结构。 Look here