Question

This question already has an answer here:

I'm wondering how to package a Java application into a native binary for Windows, Linux and Mac OS X.

I know Minecraft does this, but I can't figure out how. This is what'd I'd like to do:

  • From NetBeans (preferably) or Eclipse, build the three binaries automatically.
  • Include native libraries for OpenGL et. all.
  • Obfuscate my code if possible.

If there's some way to mimic the Minecraft auto-updater feature, that'd be totally awesome.

So, are there any tools available to do this for you, or do I need to write a large bulk of XML to accomplish this?

Was it helpful?

Solution

To make a native binary for Windows, you would use a tool like Launch4J. On OSX you could use JarBundler. Minecraft simply distributes the jar file for Linux. I'm not aware of a native binary packager for Linux.

You could also compile your Java code via GCJ but that's probably not what you want, as there are limitations and compatibility concerns there. The native bundlers like Launch4j and JarBundler simply wrap your jar file and use a real JRE to execute it.

As for integrating with NetBeans or Eclipse, you'll probably have to write your own ant build file, especially since the solution varies from one platform to the next.

OTHER TIPS

If you are using Java 9, you can also use Java 9 Modularization & jlink to ship a zero-dependency native app.

There is also maven-jlink-plugin that could help here.

Take a look at GCJBuilder plugin for eclipse. Not sure if it supports cross compilation as the command GCJ compiler does.

If the app. has a GUI and can be distributed from a web site, look into Java Web Start. JWS is supplied by Oracle, and provides auto-update amongst many other features.

Note that JWS uses Jar files, so no conversion is necessary.

I've used JSMooth for this in the past: http://jsmooth.sourceforge.net/ As mentioned before, this wrapper just looks for a real JRE to run it - it does not come with a bundled JRE.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top