views:

270

answers:

2

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?

+5  A: 

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.

Brandon E Taylor
+3  A: 

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 you resources live in

{home}/src/main/resources/com/dmxio/games/breakout

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:

http://maven.apache.org/guides/getting-started/index.html#How_do_I_add_resources_to_my_JAR

Alternatively :) the other approach here is just fine...

Jon
+1 I favor using this convention. And it simplifies things if someday you want to build the project with maven.
Andreas_D
I agree with Andreas_D - thanks for the information.
byte