# Fix Java JAR No Main Manifest Attribute Error

> Fix the no main manifest attribute error when running a Java JAR by adding a Main-Class entry to the manifest file, with step-by-step build instructions

**URL:** https://sentry.io/answers/cant-execute-jar-file-no-main-manifest-attribute/

---

## The Problem

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

```
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:

```java
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:

```sh
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:

    ```sh
    javac -d bin com/example/Main.java
    ```

2. In the `src` directory, create a `manifest.txt` manifest file with the following content:

    ```sh
    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:

    ```sh
    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:

    ```sh
    java -jar MyApp.jar
    ```

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

    ```sh
    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.

---

*Source: [sentry.io/answers/cant-execute-jar-file-no-main-manifest-attribute/](https://sentry.io/answers/cant-execute-jar-file-no-main-manifest-attribute/)*
