Possible Duplicate:
How do I create an .exe for a Java program?
I've just made a simple program with Eclipse and I want to compile it into an executable, but simply can't seem to find out how to do it.
This question is related to
java
executable
compilation
I use launch4j
ANT Command:
<target name="jar" depends="compile, buildDLLs, copy">
<jar basedir="${java.bin.dir}" destfile="${build.dir}/Project.jar" manifest="META-INF/MANIFEST.MF" />
</target>
<target name="exe" depends="jar">
<exec executable="cmd" dir="${launch4j.home}">
<arg line="/c launch4jc.exe ${basedir}/${launch4j.dir}/L4J_ProjectConfig.xml" />
</exec>
</target>
I would use GCJ (GNU Compiler for Java) in your situation. It's an AOT (ahead of time) compiler for Java, much like GCC is for C. Instead of interpreting code, or generating intermediate java code to be run at a later time by the Java VM, it generates machine code.
GCJ is available on almost any Linux system through its respective package manager (if available). After installation, the GCJ compiler should be added to the path so that it can be invoked through the terminal. If you're using Windows, you can download and install GCJ through Cygwin or MinGW.
I would strongly recommend, however, that you rewrite your source for another language that is meant to be compiled, such as C++. Java is meant to be a portable, interpreted language. Compiling it to machine code is completely against what the language was developed for.
The thing you can do is create a .bat that will execute the .jar file created, checking if there is a JRE present.
From Mitch useful link (source)
java -classpath myprogram.jar de.vogella.eclipse.ide.first.MyFirstClass
This can be used into your batch...
There is a small handful of programs that do that... TowerJ is one that comes to mind (I'll let you Google for it) but it costs significant money.
The most useful reference for this topic I found is at: http://mindprod.com/jgloss/nativecompiler.html
it mentions a few other products, and alternatives to achieve the same purpose.
We have found Jsmooth to be well-working and easily scriptable with ant under Linux. You may want to use one-jar (also easily scriptable with ant under Linux) to collect a multifile application in a single jar first.
We primarily needed the easy deployment of the EXE combined with the "hey, you need Java version X, go here to download" facilities.
(but what you most likely need is the "Runnable jar" / "Executable jar" facility in standard Java).
I usually use a bat script for that. Here's what I typically use:
@echo off
set d=%~dp0
java -Xmx400m -cp "%d%myapp.jar;%d%libs/mylib.jar" my.main.Class %*
The %~dp0 extract the directory where the .bat is located. This allows the bat to find the locations of the jars without requiring any special environment variables nor the setting of the PATH variable.
EDIT: Added quotes to the classpath. Otherwise, as Joey said, "fun things can happen with spaces"
Source: Stackoverflow.com