The Java TM Tutorial

| Start of Tutorial > Start of Trail > Start of Lesson | Search

Trail: JAR Files
Lesson: Using JAR Files: The Basics

## Running JAR-Packaged Software

> Now that you've learned how to create JAR files, how do you actually run the code that you've packaged? Consider these three scenarios:
> - Your JAR file contains an applet that is to be run inside a browser.
> - Your JAR file contains an application that is to be invoked from the command line.
> - Your JAR file contains code that you want to use as an extension.

> This section will cover the first two situations. A separate trail in the tutorial on the extension mechanism covers the use of JAR files as extensions.

### Applets Packaged in JAR Files

> To invoke any applet from an HTML file for running inside a browser, you need to use the APPLET tag. (See the Writing Applets trail for information on applets.) If the applet is bundled as a JAR file, the only thing you need to do differently is to use the ARCHIVE parameter to specify the relative path to the JAR file.

> As an example, let's use (again!) the TicTacToe demo applet that ships with the JavaTM Development Kit. The APPLET tag in the HTML file that calls the demo looks like this:

> >     <applet code=TicTacToe.class
> >             width=120 height=120>
> >     </applet>

> If the TicTacToe demo were packaged in a JAR file named `TicTacToe.jar`, you could modify the APPLET tag with the simple addition of an ARCHIVE parameter:

> >     <applet code=TicTacToe.class
> >             archive="TicTacToe.jar"
> >             width=120 height=120>
> >     </applet>

> The ARCHIVE parameter specifies the relative path to the JAR file that contains `TicTacToe.class`. This example assumes that the JAR file and the HTML file are in the same directory. If they're not, you would need to include the JAR file's relative path in the ARCHIVE parameter's value. For example, if the JAR file was one directory below the HTML file in a directory called `applets`, the APPLET tag would look like this:

> >     <applet code=TicTacToe.class
> >             archive="applets/TicTacToe.jar"
> >             width=120 height=120>
> >     </applet>

### Applications Packaged in JAR Files - 1.1 platform

> You can run applications that are bundled as JAR files by using the JDKTM 1.1 `jre` tool:

> >     jre -cp app.jar MainClass

> In version 1.1 of the JDK software, the `-cp` option prepends the `app.jar` file to the system classpath. `MainClass` identifies the class within the JAR file that is the application's entry point. (Recall that in an application, one of the classes must have a method with the signature `public static void main(String[] args)` that serves as entry or starting point for the application.)

### JAR Files as Applications - 1.2 platform only

> In version 1.2 of the JDK software, you can run JAR-packaged applications with the Java interpreter. The basic command is:

> >     java -jar jar-file

> The `-jar` flag tells the interpreter that the application is packaged in the JAR file format.

> > Note: The -jar option is not available for interpreters prior to version 1.2 of the Java Development Kit.

> Before this command will work, however, the runtime environment needs to know which class within the JAR file is the application's entry point.

> To indicate which class is the application's entry point, you must add a `Main-Class` header to the JAR file's manifest. The header takes the form:

> >     Main-Class: classname

> The header's value, `classname`, is the name of the class that's the application's entry point.

> To create a JAR file having a manifest with the appropriate `Main-Class` header, you can use the Jar tool's `m` flag as described in the Modifying a Manifest section. You would first prepare a text file consisting of single line with the `Main-Class` header and value. For example, if your application was the single-class HelloWorld application, the entry point would of course be the HelloWorld class, and your text file would have this line:

> >     Main-Class: HelloWorld

> Assuming your text file was in a file called `mainClass`, you could merge it into a JAR file's manifest with a command such as this:

> >     jar cmf mainClass app.jar HelloWorld.class

> With your JAR file prepared in this way, you can run the HelloWorld application from the command line:

> >     java -jar app.jar

| Start of Tutorial > Start of Trail > Start of Lesson | Search