A message for Linux.com registered users: We are in the process of making changes to the Linux forums. Starting Monday, 8/13/18 at 6:00 PM PT, you will be unable to access the forums. They will re-launch as soon as possible on Wednesday, 8/15/18 with new features and improved functionality. Thank you for your patience and stay tuned for the new improved forums.

May 31, 2011

Finding out what command is running a program

Is there a way to find out what command is running a program when you click on it and run it graphically? My problem is with an executable jar file. When I right click on it in a graphical environment and choose to run it with the jre it runs fine. However, running java minecraft.jar from the command line results in this error:

Exception in thread "main" java.lang.NoClassDefFoundError: minecraft/jar
Caused by: java.lang.ClassNotFoundException: minecraft.jar
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: minecraft.jar. Program will exit.

I thought this may be a problem with the jar file, but if that is so why would it run with the graphical run method? What I would like is to find out exactly what command clicking "run with Sun Java 6 Runtime" is executing so that the file is working. Once I know that it should be possible to run that command manually, as well as from a .sh file.
Thanks in advance.

EDIT: The problem was simply that I was running the jar with incorrect syntax. The syntax for executable jars is java -jar foo.jar. It would still be nice to know the original question though.

Click Here!