views:

65

answers:

3

How do you distribute other files needed by your application that aren't in a jar file? For example, the application at http://www.javabeginner.com/java-swing/java-swing-shuffle-game . The download contains Shuffle.jar, Shuffle.bat, Score.dat, and an images folder with 3 images in it. I can see possibly putting the images directly in Shuffle.jar, but you wouldn't want to put Score.dat in the jar file because it changes. Is there somewhere you could identify this type of file in the jnlp?

+1  A: 

The non-java files should be stored as resources. For files that change, you store the original or template file also as a resource in your jar. When the program starts, you have it check the local system to see if that file exists. If not, it creates the local file by copying the template file from the JAR resource. If the file already exists, then it is used as is.

To save files to the local system, even when running in the sandbox (unsigned), you can use the PersistenceService (javadoc / example). If your java application is signed, then you can use the regular File apis to write the file to the local machine, such as in a ".yourgame" subfolder under the user's home folder.

mdma
A: 

You can put all those files (except the scores file) in your jar file and load the contents using resource loading.

Peter Tillemans
A: 

I've just deleted and restarted my reply twice now, changing my answer each time; this is confusing and needs a bit more clarification.

Are you SURE that application is supposed to be a Web Start app? On the site you linked to, it doesn't appear to be. Are you trying to take an application that was not designed as a Web Start application and change it into one that can be Web Start?

If it's not a Web Start app as your tag implies, then this question is open ended. You can distribute it 100 different ways.

If you are indeed trying to convert it into a Web Start app, you can start by packaging the images into the jar and that will alleviate your first headache if you just read them from there instead of from a File(). If it's going to be Web Start, then you need to decide how you want to keep scores. You have to decide what the scoring system is like before you can decide on how to go about it; will all the scores be kept on the web site hosting the Web Start app? Will that part still be local? If you want to get access to the local file system, you need to sign the jar, then you can extract the score.dat to the file system and do whatever you want with it if the end user accepts.

You need to figure out what you want to do before you can do it, or at least clear it up for us if you already know more than we know you know.

Loduwijk
Yes, I am trying to convert a non JWS app to a JWS app. The app isn't the shuffle game, I am just using that as an example that has some of the issues of the app I am working on.One file that we currently distribute with the app is a dictionary that is used with Jazzy spell checker. That is persistent, and the user's customized dictionary ends up elsewhere. There are several properties files, which I understand that properties can be set up in the jnlp. Then there is a key file that is used by Orbix/CORBA (I would like to get rid of this, but I can't yet).
Michael Munsey