Convert Jar to exeThis video explains how to make Executable (exe) file for a java application using NetBeans and Launch4J library.NetBeans allows one click. Add launch4j console mode launch script for.nix (Luke S). Tickets #172, #186, #198, #200, #206 Launch4j GUI supports also Java 1.9 and up. Changes in version 3.12 Ticket #179, #183 The generated executable fully supports Java 9 and newer (Sergey Karpushin).
Originally published on: Sun, 16 Aug 2009 13:46:59 +0000
I noted today that a successful independently written / marketed ( MicroISV ) product had been built in Java. The redistributable files were available for both Windows and MacIntosh computers.
I emailed the author, asking what he used to build the installations for each. I’ll discuss the Mac software in a later post. For the Windows installation, he pointed me to a product called launch4j. ( See http://launch4j.sourceforge.net/ ).
Launch4j is an all-Java program that will bind a configurable Windows stub executable file to a Java jar file. The result is a jar embedded in a specially configured EXE.
When invoked, the EXE will execute the system’s appropriate JVM ( or will issue an error message if a compatible JVM hasn’t been found ) and will then execute the embedded jar file in this JVM.
Effectively, launch4j bottles up Java code into a Windows EXE.
Since launch4j is an all-Java program, one can actually build Windows EXE’s on various supported non-Windows platforms.
Let’s take a trivial sample Java program and turn it into an EXE with launch4j.
HeyGuys.java
Enter the following to compile and execute the program:
The message:
…should appear on the screen. Click OK.
Let’s take the file HeyGuys.class and put it in its own jar file. We first need to create a manifest file so that the jar will contain metadata to indicate which class should be executed via java.exe or javaw.exe.
Enter the following two lines in a file called manifest.mf:
Launch4j Java 11
Then, issue the following command:
Executing the above command should yield the file heyguys.jar.
Now, let’s try to execute the jar to see if we’ve packaged it up correctly.
You should see the same message window that was displayed earlier:
Finally, let’s use launch4j to package up the jar into an EXE.
Although launch4j has a command-line interface, I first used the GUI. The first screen I filled in looked similar to this:
I tried to just save the EXE at that point, but I then needed to specify a minimum Java version on this tab:
After changing those values, launch4j wanted me to save those options in an XML file, so I just chose the name l4j.xml arbitrarily.
Launch4j then quickly packaged a small EXE.
If you run it on a version of Windows with Java 1.6.0 or above, you’ll see the message window. If you don’t have a 1.6.x JVM, you’ll be prompted to download one.
Java Launch4j Program
Note that launch4j is not an installer. Now that you have an EXE, you might want to build an installer around it with a product like Inno Setup or the NSIS installer system.
Java Launch4j Linux
Also note that in addition to the bare options that I’ve chosen, a number of other options are available including the ability to set an icon and the ability to specify the JVM’s runtime parameters such has heap size.
Java Launch4j
The source code and EXE for the above sample program can be found here: