How do I run a jar when I double-click it?
So, I double click on my jar file and it just blinks a window with white screen then it disappears. After that, I right-click and select "Open with jar launcher" it is the same. too. I opened up Terminal and type java -jar "System FRONT.jar"
then it opened up perfectly.
I want it to be opened directly when double clicking it! How do I do that?
Solution 1:
You can prepend a short script to the .jar to make it executable via double click. In Terminal do the following:
$ cat > header-template <<"EOF"
#!/bin/sh
exec java -jar $0 "$@" > /dev/null
EOF
$ cat header-template "System FRONT.jar" > executable_app
$ chmod +x executable_app
Double-clicking executable_app
should now launch the application.
Why does this work in the first place? Well, a .jar is just a .zip archive which gets unpacked and executed by java. And the zip format allows to prepend additional stuff in front of the actual archive. Any zip unarchiver skips this part until it finds the start of the archive (indicated by PK...).
Solution 2:
The best way to make a java gui application work with OSX is to bundle it as an application. This requires Jar Bundler.app which on Lion is at /usr/share/java/Tools/Jar Bundler.app
. I think it is installed as part of Xcode but appears not to be in Apple's current documentation so might not now be supported. Old documentation is here
There do appear to be ant tasks to do this in appbundler which is documented in the Oracle JavaSE documentation.
Solution 3:
After long time efforts,I finally find the solution,that is ,to make your own Jar Launcher app:
-
Launch Automator to make Automator Quick Action
- Select Application
- Look for the Run Shell Script action with Filter Finder Items and add it to the right.
-
paste scripts here like this below:
I make some changes to make it better
export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
cd "$(dirname "$@")"
java -jar "$@"
save this quick action as an app for example "open jar.app"
go to /System/Library/CoreServices/Jar Launcher.app/Contents/Resources and copy JarLauncher.icns
- cd to "open jar.app" you just made and paste JarLauncher.icns to "open jar.app/Contents/Resources"
- edit "open jar.app/Contents/Info.plist" and change key(AutomatorApplet to JarLauncher.icns):
<key>CFBundleIconFile</key>
<string>JarLauncher.icns</string>
- now you can choose to open with "open jar.app" just like before.