How to run a JAR file

JavaJar

Java Problem Overview


I created a JAR file like this:

jar cf Predit.jar *.*

I ran this JAR file by double clicking on it (it didn't work). So I ran it from the DOS prompt like this:

java -jar Predit.jar

It raised "Failed to load main class" exceptions. So I extracted this JAR file:

jar -xf Predit.jar

and I ran the class file:

java Predit

It worked well. I do not know why the JAR file did not work. Please tell me the steps to run the JAR file

Java Solutions


Solution 1 - Java

You need to specify a Main-Class in the jar file manifest.

Oracle's tutorial contains a complete demonstration, but here's another one from scratch. You need two files:

Test.java:

public class Test
{
    public static void main(String[] args)
    {
        System.out.println("Hello world");
    }
}

manifest.mf:

Manifest-version: 1.0
Main-Class: Test

Note that the text file must end with a new line or carriage return. The last line will not be parsed properly if it does not end with a new line or carriage return.

Then run:

javac Test.java
jar cfm test.jar manifest.mf Test.class
java -jar test.jar

Output:

Hello world

Solution 2 - Java

java -classpath Predit.jar your.package.name.MainClass

Solution 3 - Java

Before run the jar check Main-Class: classname is available or not in MANIFEST.MF file. MANIFEST.MF is present in jar.

java -jar filename.jar

Solution 4 - Java

You have to add a manifest to the jar, which tells the java runtime what the main class is. Create a file 'Manifest.mf' with the following content:

Manifest-Version: 1.0
Main-Class: your.programs.MainClass

Change 'your.programs.MainClass' to your actual main class. Now put the file into the Jar-file, in a subfolder named 'META-INF'. You can use any ZIP-utility for that.

Solution 5 - Java

A very simple approach to create .class, .jar file.

Executing the jar file. No need to worry too much about manifest file. Make it simple and elgant.

Java sample Hello World Program

public class HelloWorld {
	public static void main(String[] args) {
		System.out.println("Hello World");
	}
}

Compiling the class file

javac HelloWorld.java

Creating the jar file

jar cvfe HelloWorld.jar HelloWorld HelloWorld.class

or

jar cvfe HelloWorld.jar HelloWorld *.class

Running the jar file

 java -jar HelloWorld.jar

Or

java -cp HelloWorld.jar HelloWorld

Solution 6 - Java

If you don`t want to create a manifest just to run the jar file, you can reference the main-class directly from the command line when you run the jar file.

java -jar Predit.jar -classpath your.package.name.Test

This sets the which main-class to run in the jar file.

Solution 7 - Java

Java

class Hello{
   public static void main(String [] args){
    System.out.println("Hello Shahid");
   }
}

manifest.mf

Manifest-version: 1.0
Main-Class: Hello

On command Line:

$ jar cfm HelloMss.jar  manifest.mf Hello.class 
$ java -jar HelloMss.jar

Output:

Hello Shahid

Solution 8 - Java

Eclipse Runnable JAR File

Create a Java Project – RunnableJAR

  • If any jar files are used then add them to project build path.
  • Select the class having main() while creating Runnable Jar file. enter image description here

Main Class

public class RunnableMainClass {
	public static void main(String[] args) throws InterruptedException {
		System.out.println("Name : "+args[0]);
		System.out.println(" ID  : "+args[1]);
	}
}

Run Jar file using java program (cmd) by supplying arguments and get the output and display in eclipse console.

public class RunJar { 
	static StringBuilder sb = new StringBuilder();
	public static void main(String[] args) throws IOException {
		String jarfile = "D:\\JarLocation\\myRunnable.jar";
		String name = "Yash";
		String id = "777";
		
		try { // jarname arguments has to be saperated by spaces
			Process process = Runtime.getRuntime().exec("cmd.exe start /C java -jar "+jarfile+" "+name+" "+id);
					//.exec("cmd.exe /C start dir java -jar "+jarfile+" "+name+" "+id+" dir");
            BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream ()));
            String line = null;
            while ((line = br.readLine()) != null){
                sb.append(line).append("\n");
            }
			System.out.println("Console OUTPUT : \n"+sb.toString());
			process.destroy();
        }catch (Exception e){
        	System.err.println(e.getMessage());
        }
   }
}

In Eclipse to find Short cuts:

Help ► Help Contents ► Java development user guide ► References ► Menus and Actions

Solution 9 - Java

I have this folder structure: >D:\JavaProjects\OlivePressApp\com\lynda\olivepress\Main.class >D:\JavaProjects\OlivePressApp\com\lynda\olivepress\press\OlivePress.class >D:\JavaProjects\OlivePressApp\com\lynda\olivepress\olives\Kalamata.class >D:\JavaProjects\OlivePressApp\com\lynda\olivepress\olives\Ligurian.class >D:\JavaProjects\OlivePressApp\com\lynda\olivepress\olives\Olive.class

Main.class is in package com.lynda.olivepress

There are two other packages: >com.lynda.olivepress.press

>com.lynda.olivepress.olive

  1. Create a file named "Manifest.txt" with Two Lines, First with Main-Class and a Second Empty Line.

    Main-Class: com.lynda.olivepress.Main

D:\JavaProjects\OlivePressApp\ Manifest.txt

  1. Create JAR with Manifest and Main-Class Entry Point

D:\JavaProjects\OlivePressApp>jar cfm OlivePressApp.jar Manifest.txt com/lynda/olivepress/Main.class com/lynda/olivepress/*

  1. Run JAR

java -jar OlivePressApp.jar

Note: com/lynda/olivepress/* means including the other two packages mentioned above, before point 1)

Solution 10 - Java

If you don't want to deal with those details, you can also use the export jar assistants from Eclipse or NetBeans.

Solution 11 - Java

To run jar, first u have to create

>executable jar

then

>java -jar xyz.jar

command will work

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionmoonView Question on Stackoverflow
Solution 1 - JavaJon SkeetView Answer on Stackoverflow
Solution 2 - JavaLynchView Answer on Stackoverflow
Solution 3 - JavaKARTHIKEYAN.AView Answer on Stackoverflow
Solution 4 - JavaFlorian FankhauserView Answer on Stackoverflow
Solution 5 - Javanagendra547View Answer on Stackoverflow
Solution 6 - JavaEgilView Answer on Stackoverflow
Solution 7 - JavaMohammad Shahid SiddiquiView Answer on Stackoverflow
Solution 8 - JavaYashView Answer on Stackoverflow
Solution 9 - JavaGabriel DView Answer on Stackoverflow
Solution 10 - JavafortranView Answer on Stackoverflow
Solution 11 - JavaDeepaView Answer on Stackoverflow