So I\'ve been writing a simple 3D GUI application that I intended for users to use simply by double-clicking on the JAR file. I got it working perfectly before putting it in
Just so that the answer to the question is clear to anyone passing by, I'll put my solution here (I couldn't before because of the 8-hour rule):
Well, after looking and relooking at my code, I discovered the problem was in some BS'ery involving the detection of 64-bit systems where it was loading the wrong dll's. Why it worked from the command-line and not via double-click I don't know and will probably never know, but it works via double-click now, so I'm happy. Sorry about the troubles.
I had same issue with .jar files after trying everything i realized that I have more than one versions of Java installed. Removing the unnecessary versions solved my issue. May be because the .jar was confused between different versions of JRE.
Ok, so I was stuck on this exact issue for over a week now (it has been for a side project for which I could only devote a few hours a day).
This happened on my desktop, but for some reason wouldn't happen on the laptop.
After looking around, I found this answer and I thought I'd share it for people who are like me, found nothing useful in the accepted answer here. Credits go to anonymous Stack Overflow user, whom username I've lost in all the excitement.
As mentioned by some other answer somewhere to an seeming unrelated issue, use this little program to associate your JAR files to the 64 bit version of java:
http://johann.loefflmann.net/en/software/jarfix/index.html
Save the program somewhere and run it from command line with the parameter /64: c://path//jarfix.exe /64
Nothing else worked for me, but this was like magic. :)
Just to put my two cents in, I had this problem and it was caused by something-or-other in the manifest, I suppose. I resolved it by generating the executable JAR in a different manner:
Previous developer generated the Runnable JAR from Eclipse (right-click project -> Export... -> Runnable JAR) and this worked fine for everyone. Then I came along and generated the runnable JAR by configuring a Maven plugin ("assembly") in the pom.xml and so a classic Maven build would produce the runnable JAR.
This worked nicely for me (from cmd and by double-clicking) but not for the end-users (who could still run the tool from cmd, but not by double-clicking the JAR).
I generated the runnable JAR from Eclipse and now everyone is happy again. Not sure why the maven-generated JAR wasn't ok to run by double-clicking, but I can't be bothered to investigate further now that the job is done. Hope this half-advice helps someone.
I got fed up with not being able to modify file associations in Windows 7 Control Panel and edited the registry (NOTE: it's not a bad idea at all to set a restore point before proceeding if you think there's ANY chance you may screw up)(I neither set restore point nor screwed up):
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\jar_auto_file]
@=""
"EditFlags"=hex:00,00,00,00
[HKEY_CLASSES_ROOT\jar_auto_file\shell]
[HKEY_CLASSES_ROOT\jar_auto_file\shell\open]
[HKEY_CLASSES_ROOT\jar_auto_file\shell\open\command]
@="\"C:\\Program Files\\Java\\jdk1.7.0_60\\bin\\javaw.exe\" -jar \"%1\" %*"
This assumes that .jar
files have (Default)
value jar_auto_file
. If not do this:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\.jar]
@="jar_auto_file"
p.s. One problem I found in the registry was that jarfile
was associated with Netbeans, Chrome, and java.exe as well as with Applications\java.exe
. I deleted that entire node (after exporting it, just so I could put it back if it was essential; it wasn't). Now there is NO jarfile
in my registry and all .jar files execute as before.
This manifests itself by showing more than one file type associated with .jar
files in Control Panel. You want this:
If there's more than one item shown in Recommended programs, search registry for jarfile
and (export first, then) delete that node:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.jar
The JAR is executable from CMD. That means the JAR itself is formed correctly. Good.
The only reason to fail now is that double-click produces not a right command. Expected command, as you correctly said, is
java -jar Modeler.jar
But when you associate javaw.exe with a JAR extension, I suspect it executes
javaw Modeler.jar
It is easy to check: make a javajar.cmd file, containing the following
javaw -jar %*
and associate it with JAR. If you app starts OK, I'm right. Otherwise, sorry.