JAR to EXE : Java program to Windows executable

Java is the best programming language available today that works across different platforms. I love Java and JavaFX. Once you finish writing your application, you may want to release it. The problem is, the native Java program executable, the good old .jar files always have a cup icon and sometimes a simple double click wont open them. The solution to this problem is to convert JARs to native executable, for windows .exe files.

In this article, I will explain how to make windows executable (.exe) from your Java / JavaFX program. Having exe file for windows has many advantages. We can set icons, properties, version information etc.

Step 1 : Make JAR file for your application

The first step is making a JAR file from your java code. This is pretty simple if you are using an IDE like NetBeans.

NetBeans  : NetBeans provide option for making JAR file very easily. Just right click on your project from Projects window and then select “clean and build”. This will create a folder called “dist” in your project directory. Inside dist, there will be the final JAR. All the libraries required for running the program will be inside “/dist/lib” directory.

Maven  : Maven uses convention over configuration, this means that you only need to tell Maven the things that are different from the defaults. You can use “mvn package” command to create JAR files.

Step 2 : Download Launch4J

Launch4J is so far the best wrapper available for converting JAR files to windows executable. It is written in JAVA and is open source. Download latest version of Launch4J from http://launch4j.sourceforge.net/. Once You install and open it, you will get the following screen. 

Launch4J main screen
Launch4J main screen

On the first look, the interface may look little confusing, but it is actually simple and every field will become too important once you get used to it.

Step 3 : Launch4J Basic Configurations

This tab contains the most basic configurations for the exe like jar file to be converted and the icon to be used.

Basic
  • Output File
    This is the location where the compiled EXE (executable) file will be created once the conversion is complete
  • Jar
    Location of the Jar file to be converted in to executable
  • Wrapper manifest
    You can specify manifest file here. This will be used for processing the application against User Account Control(UAC) in windows.
  • Icon
    Here you can specify the icon. It has to be in ico format.
  • Change dir
    Change current directory to an arbitrary path relative to the executable. If you omit this property or leave it blank it will have no effect. Setting it to . will change the current dir to the same directory as the executable. .. will change it to the parent directory, and so on.
  • Command line args
    Here you can specify the java arguments

In case if the system doesn’t have supported Java, the error message and URL to download can be specifed under the Java Download and Support Sections.

Classpath

Here you can specify classpath for your main class. Select the JAR file by selecting the directory icon from right and the default classpath corresponding to main class will be loaded. You can edut them from Edit Item text field.
You can also add or remove classpath for given main class from this section.

Single Instance

Here you can specify whether you need only once instance of the application running at a time. Give a mutext name and window title if single instance option needed.

JRE

This section allows configuring JRE. If you are bundling JRE with your product (Which is not a good idea at all), you can specify the path here. You can check the ‘Fallback option’ so that the bundled JRE will only be used when the JRE isntalled on the system does not matches with min and max version requirement.

Min JRE Version is a mandatory field and it has to be specified.You can also specify Heap parameters or any JVM options in the corresponding fields.

Splash

If you need a custom splash screen, you can check the “Enable Splash Screen option”. Then specify the file (Either bitmap image or JAR file). In the TimeOut field, time out can be specified.

Version Info

This is a good way to properly specify version information for your executable. This entries will then be shown in the properties section of executable.

Messages

Messages section allows to create custom messages when errors occur. You can enable this option by checking “Add custom messages”.

Step 4 : Compile and Make Executable

Once the entries are filled, you have to save the configuration. For saving, click on the Floppy DIsk icon from the menu. Your configuration entries will be saved as an xml file called config.xml. After saving click on the Setting like icon next to save button to start converting to executable file.

Launch4J Example Configuration
Launch4J Example Configuration

If it the wrapping was a success, you should see the following messages in Log

Compiling resources
Linking
Wrapping
Successfully created D:\Library Assistant\dist\Library Software.exe

You can start your program from executable by clicking on the Play button from menu.

Watch video tutorial from Genuine Coder YouTube channel :-

Muhammed Afsal Villan
Muhammed Afsal Villan is an experienced full-stack developer, specialized in desktop and mobile application development. He also regularly publishes quality tutorials on his YouTube channel named 'Genuine Coder'. He likes to contribute to open-source projects and is always enthusiastic about new technologies.

21 COMMENTS