When you want to run a Java class wich needs additional libraries, you usually run java -cp mylib.jar MyClass or you specify the environment variable $CLASSPATH before running the class.
When you have a JAR file you want to run, you usually do this by issuing java -jar myjarfile.jar
Maybe you’ll think: Hey, I want to run a JAR file with some additional library so I issue java -cp mylib.jar -jar myjarfile.jar ! Forget about it, it won’t work. Believe me. Look into the java man page (section “-jar”) if you don’t believe me. I wasted hours on sorting that out. Even setting the $CLASSPATH variable won’t work. Here’s the solution:
- Open the jar file with some ZIP program (JAR = renamed ZIP).
- Open META-INF/MANIFEST.MF in a text editor.
- Copy the path and name of the main class: If you see a line like “Main-Class: some.package.ClassName”, it’s the part after the colon.
- Run this on your command line instead of the command that doesn’t work: java -cp mylib.jar:myjarfile.jar some.package.ClassName
Now you shouldn’t get any more NoClassDefFoundErrors…
java -cp /opt/JMF/lib/jmf.jar:player_30.jar imc.epresenter.player.Manager
This assumes that you put the Java Media Framework to /opt/JMF and you are in the directory where player_30.jar resides.