Java
in a Windows EXE with launch4j By Maxflash
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
// Display a simple message
// This code is in the public domain.
import javax.swing.*;
public class HeyGuys {
public static void main(String[] args) {
JOptionPane.showMessageDialog(null,"Hey, you guys!");
System.exit(0);
}
}
Enter the following to compile and
execute the program:
javac HeyGuys.java java
HeyGuys
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: Manifest-Version: 1.0
Main-Class: HeyGuys
Then, issue the following command: jar -cfm heyguys.jar manifest.mf HeyGuys.class
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. java
-jar heyguys.jar
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.
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.
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.
Comment @
hackingsinhalen.blogspot.com by vipula dissanayake.
No comments: