Create JAR file in Java & Eclipse

[ad name=”AD_INBETWEEN_POST”] Let us see how to create a JAR file using Java’s jar command as well as using Eclipse IDE. The JAR file format is based on the popular ZIP file format. Usually these file are used for archiving and distribution the files and implementing various libraries, components and plug-ins in java applications. Compiler and JVMs (Java Virtual Machine) can understand and implement these formats for java application.

JAR file using Java commands

Following are few commands that can be used to create/view/modify/execute a JAR file using Java command line utilities and JVM.

Create a JAR file

jar cf JAR_FILE_NAME FILE_NAMES_OR_DIRECTORY_NAME e.g. jar cf MyApp1.jar C:\JavaProject\MyApp
Code language: HTML, XML (xml)

View contents of a JAR file

jar tf JAR_FILE_NAME e.g. jar tf MyApp1.jar
Code language: HTML, XML (xml)

View contents with detail of a JAR file

jar tvf JAR_FILE_NAME e.g. jar tvf MyApp1.jar
Code language: HTML, XML (xml)
Note that we have used v (verbose) option to see the detail of JAR.

Extract content of JAR file

jar xf JAR_FILE_NAME e.g. jar xf MyApp1.jar
Code language: HTML, XML (xml)

Extract specific file from JAR file

jar xf JAR_FILE_NAME FILE_NAME(S)_FROM_JAR_FILE e.g. jar xf MyApp1.jar Test1.class
Code language: HTML, XML (xml)

Update a JAR file

jar uf JAR_FILE_NAME FILE_NAMES_FROM_JAR_FILE e.g. jar uf MyApp1.jar Test1.class
Code language: HTML, XML (xml)

Executing a JAR file

java -jar JAR_FILE_NAME e.g. java -jar MyApp.jar
Code language: HTML, XML (xml)

Create an executable JAR file

In order to create an executable JAR, one of the classes that we include in our JAR must be a main class. Create a text file called MANIFEST.MF using any text editor and copy following content in it.
Manifest-Version: 1.0 Main-Class: MyMainClass
Code language: HTML, XML (xml)
Where MyMainClass is the name of the class that contents main method. Also note that you have to specify fully qualified class name here. Use following command to create an executable JAR file.
jar cvfm MyApp.jar MANIFEST.MF FILE_NAMES_OR_DIRECTORY_NAME
Code language: HTML, XML (xml)

JAR file using Eclipse IDE

Creating JAR file using Eclipse IDE is pretty much easy. Follow the simple steps. Right click on your project, which you want to create a JAR file of. And select Export from the context menu. Select JAR file from Java folder and click Next. Provide the Destination path and click on Finish to create the JAR.

View Comments

  • @ravi: thanks for the comment. you may want to subscribe for the RSS feed or Email to get latest articles by email :)

  • Hi guys,

    When i tried with the same approach:
    I receive "Exported with compile warnings" error.Anyone face with this issue?

    Also,i tried with once more "java -jar MapFormatter.jar file" in the cmd.But still got error
    Waiting your responses

  • Hi,
    In a program i wrote I'm using some non standard java libraries (to send an e-mail), so I had to add external jars to my build path under eclipse. When I run the program under eclipse it does run properly. However when I create a jar file for my project and run my program (using java -jar my_program.jar) it throws the following Exception:

    Exception in thread "main" java.lang.NoClassDefFoundError: javax/mail/Address
    at arp.Main.main(Main.java:167)
    Caused by: java.lang.ClassNotFoundException: javax.mail.Address
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:336)

    It looks like when I exported my project as a jar file it did not include the classes contained in the external jars that I had to my build path...
    Would anyone know how to solve that problem?

    Thanks

    • Hey Charles,

      I too am having your issue (now about a year later) and am wondering if you ever got it resolved. I know it has been some time ago i'm just hoping that (as I hope to) you have been able to retain what it was that you did to solve the issue.

      I am currently getting the same/similar error:

      Exception in thread "main" java.lang.NoClassDefFoundError: javax/Mail/Address
      Caused by: java.lang.ClassNotFoundException: javax.mail.Address

      The application runs just fine within JGrasp (java compiler) as well as command line 'javac' compilation. As soon as I try to compile it into a *.jar file and run it using: "java -jar filename.jar" it fails with the above error.

      Thanks in advance,

      Kale
      (mailto:michelsk@live.com)

  • Hi

    I need to know how to convert a WSDL file to XSD using Eclipse. If yes can you give me the steps to convert the same. Thanks in advance

  • really nice and I learned jar file creation in one shot, as Java beginner I am not very familiar with Jar, thanks

Recent Posts

  • Java

Java URL Encoder/Decoder Example

Java URL Encoder/Decoder Example - In this tutorial we will see how to URL encode/decode…

4 years ago
  • General

How to Show Multiple Examples in OpenAPI Spec

Show Multiple Examples in OpenAPI - OpenAPI (aka Swagger) Specifications has become a defecto standard…

4 years ago
  • General

How to Run Local WordPress using Docker

Local WordPress using Docker - Running a local WordPress development environment is crucial for testing…

4 years ago
  • Java

Create and Validate JWT Token in Java using JJWT

1. JWT Token Overview JSON Web Token (JWT) is an open standard defines a compact…

4 years ago
  • Spring Boot

Spring Boot GraphQL Subscription Realtime API

GraphQL Subscription provides a great way of building real-time API. In this tutorial we will…

5 years ago
  • Spring Boot

Spring Boot DynamoDB Integration Test using Testcontainers

1. Overview Spring Boot Webflux DynamoDB Integration tests - In this tutorial we will see…

5 years ago