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.
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
Main-Class in the Manifest FileTo 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:
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:
src └── com └── example └── Main.java
We’ll use the following steps to create an executable JAR file with a manifest file specifying this class.
In a terminal, navigate to the
srcdirectory and compile the Java code:Click to Copyjavac -d bin com/example/Main.javaIn the
srcdirectory, create amanifest.txtmanifest file with the following content:Click to CopyManifest-Version: 1.0 Main-Class: com.example.MainReplace
com.example.Mainwith the fully qualified name of your main class. You can identify the main class as the class containing thepublic static void main(String[] args)method.Create the JAR file and include the manifest with a command similar to the one below:
Click to Copyjar cfm MyApp.jar manifest.txt -C bin/ .This command uses
cto create a new JAR file,fto specify the output JAR file name (MyApp.jar),mto include the manifest file (manifest.txt), and-C bin/ .to add the compiled classes from thebindirectory.Test the execution of the JAR file by running the following command:
Click to Copyjava -jar MyApp.jarIn this example, a correctly defined manifest will output the following message:
Click to CopyHello, 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)
- Listen to the Syntax Podcast (opens in a new tab)
![Syntax.fm logo]()
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.
