Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to mark package as a resource folder?

I have a dir structure for 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

The thing is if I right click on my package name (com.mycompany.myproject) I can only add packages and not directories (like that of an existing resource folder).

However, I don't want to use that existing resource folder for the .json files that I'm going to read into per my test class.

So, I need something to support:

// 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");
like image 933
genxgeek Avatar asked Feb 12 '14 08:02

genxgeek


People also ask

How do I add a resource folder to a jar file?

1) click project -> properties -> Build Path -> Source -> Add Folder and select resources folder. 2) create your JAR! EDIT: you can make sure your JAR contains folder by inspecting it using 7zip. Save this answer.


1 Answers

This can be solved in several ways. An example of a good approach would be the following folder structure:

src
  main
     java
     resources
  test
     java
     resources

When this is done, you put all you java classes under src/main/java/com.mycompany package and any resources under /src/main/resources/com/mycompany folder.

To link them together, go to the project properties, and find the Path tab. Mark the src/main/java and src/main/resources as source folders. (see the screen-shot attached) Path tab

If you link them together, you'll be able to use getResourceAsStream() method. If you wonder why you should use the following folder structure - this is standard maven way of keeping things clean and tidy.

like image 82
WeMakeSoftware Avatar answered Oct 12 '22 11:10

WeMakeSoftware