Sentry Answers>Java>

Can't execute JAR file: no main manifest attribute

Can't execute JAR file: no main manifest attribute

Abdul D.

The Problem

I get a “no main manifest attribute” error when I try to execute a JAR file in Java.

Click to Copy
no main manifest attribute, in /Users/User/test/app.jar

The Solution

This error occurs when you try to execute a JAR file without a properly specified Main-Class attribute in its manifest file. The Main-Class attribute tells the Java runtime which class contains the main() method used to start execution.

Specify the Main-Class in the Manifest File

To resolve the error, you need to create a manifest file that indicates which class is the main class of your application.

We’ll demonstrate this process using the example of a simple Java application with the following Main class:

Click to Copy
package com.example; public class Main { public static void main(String[] args) { System.out.println("Hello, World!"); } }

The project structure for this example looks as follows:

Click to Copy
src └── com └── example └── Main.java

We’ll use the following steps to create an executable JAR file with a manifest file specifying this class.

  1. In a terminal, navigate to the src directory and compile the Java code:

    Click to Copy
    javac -d bin com/example/Main.java
  2. In the src directory, create a manifest.txt manifest file with the following content:

    Click to Copy
    Manifest-Version: 1.0 Main-Class: com.example.Main

    Replace com.example.Main with the fully qualified name of your main class. You can identify the main class as the class containing the public static void main(String[] args) method.

  3. Create the JAR file and include the manifest with a command similar to the one below:

    Click to Copy
    jar cfm MyApp.jar manifest.txt -C bin/ .

    This command uses c to create a new JAR file,f to specify the output JAR file name (MyApp.jar), m to include the manifest file (manifest.txt), and -C bin/ . to add the compiled classes from the bin directory.

  4. Test the execution of the JAR file by running the following command:

    Click to Copy
    java -jar MyApp.jar

    In this example, a correctly defined manifest will output the following message:

    Click to Copy
    Hello, World!

Alternatively Use an IDE to Generate the JAR File

If you’re using an IDE like IntelliJ IDEA or Eclipse, you can use the built-in export tools to automatically generate a JAR file with the correct manifest. Be sure to specify the main class during the export process.

  • Sentry BlogException Handling in Java (with Real Examples) (opens in a new tab)
  • Syntax.fmListen to the Syntax Podcast (opens in a new tab)
  • Syntax.fm logo
    Listen to the Syntax Podcast (opens in a new tab)

    Tasty treats for web developers brought to you by Sentry. Get tips and tricks from Wes Bos and Scott Tolinski.

    SEE EPISODES

Considered “not bad” by 4 million developers and more than 150,000 organizations worldwide, Sentry provides code-level observability to many of the world’s best-known companies like Disney, Peloton, Cloudflare, Eventbrite, Slack, Supercell, and Rockstar Games. Each month we process billions of exceptions from the most popular products on the internet.