For most other purposes, a simple .jar or .jnlp file works fine.
For most other purposes, a simple .jar or .jnlp file works fine.
Naked JAR files aren't much better. In order to best integrate with the OS, you will probably have some runtime-specific settings that you'd like to apply (such as memory, or GUI specific-settings). If you just distribute a JAR, that can't be easily set.
For Linux and Mac (command-line only) I've gotten into the habit wrapping up a JAR in a shell script to make one single file to distribute. The shell script can set all of the JVM flags that I need, and it can be run just like any executable. This doesn't solve the problem of adding icons, or the like for GUIs, but for command-line programs, it works great.
There is a Maven plugin to do this:
https://github.com/brianm/really-executable-jars-maven-plugi...
We use it for things like the Presto CLI.
Why is this specific to Linux/Mac and command line. Windows has .bat files which can accomplish the same goal, and every filemanager I have used will recognize a script file and execute it when you try opening it.
I don't know if this works on Windows or not... Never tried - it's been a long time since I've used Windows. And even then, if I needed to do command line work, I would install Cygwin. I don't know why it wouldn't work with batch files though. Do they get a reference to their own name as an argument?
The simplest solution is to have the JAR itself do this, relaunching the JVM if necessary.
Packr itself is distributed as a single JAR file, which I find a bit ironic.