我有一个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");
答案 0 :(得分:16)
这可以通过几种方式解决。一个好的方法的例子是以下文件夹结构:
src
main
java
resources
test
java
resources
完成此操作后,您将所有java类放在src/main/java/com.mycompany
包下,并将所有资源放在/src/main/resources/com/mycompany
文件夹下。
要将它们链接在一起,请转到项目属性,然后找到“路径”选项卡。将src/main/java
和src/main/resources
标记为源文件夹。 (参见随附的屏幕截图)
如果将它们链接在一起,您将能够使用getResourceAsStream()方法。 如果您想知道为什么要使用以下文件夹结构 - 这是保持干净整洁的标准maven方式。
答案 1 :(得分:2)
当您要求她创建包时,Intellij会创建目录。这不是错误。
如果你创建包“com”,它将创建dir“com”,如果你在那里创建一个源文件,它会认为该文件在包“com”中。
如果你创建包“com.next.pack”,它将创建三个嵌套目录“com”,然后“next”,然后“pack”,如果你在那里创建一个源文件,它会认为该文件在包“com.next.pack”中。
仅将源根目录下的路径作为包。任何目录都可以设置为源根目录。
几乎任何目录结构。其中的某个地方有资源的根目录。右键单击它并将目录标记为...资源根目录。
请注意,相同的方法可用于测试和测试类的目录结构。 Look here