Chapter 7. Introducing Java Sound


Packaging the Application as a JAR

I'm converting the ImagesTests application into a JAR so all the resources (images, in this case) are packaged with the code in a single file. This makes the application easier to transport, and I get the additional benefit of compression.

I won't consider how to use applets and JAR together or advanced topics, like signing and manipulating JARs from inside Java code. The Java tutorial (trail) on JARs should be consulted on these matters.


Before JARing begins, it's important to organize the resources in relation to the application. The ImagesTests code is located in the directory ImagesTests/ (see Figure 6-21), which acts as the top-level directory for the JAR. The images are placed in an Images/ subdirectory within ImagesTests/. This makes their inclusion into the JAR easy.

One issue with using Windows is that it displays filenames in a user-friendly lowercase format. Unfortunately, Java is less forgiving, and will be unable to find a file such as BASN6A08.PNG if told to load basn6a08.png. The application developer should open a DOS window and check the filenames in Images/ directly.

The next step is to create a text file, which will become the basis of the manifest inside the JAR file. The manifest holds a range of meta-information about the JAR, related to matters like authentication, extensions, and sealing. However, I'll only add the name of the top-level class, ImagesTests, which contains the main( ) method. This permits the application to be started by double-clicking.

The text file, mainClass.txt (any name will do), contains a single line:

     Main-Class: ImagesTests

Figure 6-21. The ImagesTests/ directory and Images/ subdirectory


The file should be stored in the same directory as the application. The JAR file can be made using the command:

     jar cvmf mainClass.txt ImagesTests.jar *.class Images

This command should be executed in the application directory. It has the following format:

     jar <options> <manifest info file> <name of JAR file>                             <list of input files/directories>

The options, cvmf, specify the following:

 

c

Create a JAR file.

v

Verbose output goes to stdout during the creation process, including a list of everything added to the JAR.

m

A manifest information file is included on the command line, and its information should be incorporated into the JAR's manifest.

f

A filename for the resulting JAR is given on the command line.


The list of input files can use the wildcard symbol (*). All the .class files in the current directory are added to the JAR (e.g., ImageSFXs.class, ImagesLoader.class, ImagesPlayer.class, ImagesPlayerWatcher.class, and ImagesTests.class). Also, the subdirectory Images/ is added together with all its contents.

The ImagesTests.jar file will appear in ImagesTests/ and can be started by double-clicking its icon. The JAR file's size is about 130 KB, compressed by 13 percent from the original collection of files.

The application can be started from the command line as well, by typing:

       java -jar ImagesTests.jar

The advantage of this approach is that the output from the application will appear in the DOS window, whereas it is lost if the program is started via its icon.

A simple way of checking the contents of the JAR file is to open it with a zip utility, such as WinZip (http://www.winzip.com). Alternatively, type this:


          jar tf ImagesTests.jar 



Killer Game Programming in Java
Killer Game Programming in Java
ISBN: 0596007302
EAN: 2147483647
Year: 2006
Pages: 340

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net