In Java, where in the package/source hierarchy should resources be placed?
You can always adopt a standard Maven approach to your project and put all application source files in:
{home}/src/main/java/com/dmxio/games/breakout
and then your resources live in:
{home}/src/main/resources/com/dmxio/games/breakout
and your tests then live in:
{home}/src/test/java/com/dmxio/games/breakout
This structure is a standard convention to structuring projects in the Maven world. It brings a lot of advantages with it, which you may want to look at. You can check out the resources section here: Apache Maven Guides - How do I add resources to my JAR
Alternatively :) the other answer's approach here is just fine...
I have seen this handled in a number of different ways:
Place your resources directly in a subdirectory under
com/dmxio/games/breakout
(e.g./com/dmxio/games/breakout/images/foo.gif
and/com/dmxio/games/breakout/images/bar.gif
)Place your resources in a jar along with your class files (e.g.
foo.gif
andbar.gif
bundled inbreakout.jar
)Place your resources in a separate 'resources jar' in a subdirectory under
com/dmxio/games/breakout
(e.g.foo.gif
andbar.gif
bundled in/com/dmxio/games/breakout/images/images.jar
)
I tend to favor the last option.
You can then use the java.lang.Class.getResource()
method to retrieve your resources.