Reputation: 15409
Say I have developed a game, and placed it in the package structure:
com.dxmio.games.breakout
Where then is the 'best practice' place to put resources like audio and images that the game uses?
Upvotes: 8
Views: 7499
Reputation: 63672
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...
Upvotes: 17
Reputation: 25349
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
and bar.gif
bundled in breakout.jar
)
Place your resources in a separate 'resources jar' in a subdirectory under com/dmxio/games/breakout
(e.g. foo.gif
and bar.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.
Upvotes: 11