what is java.lang.UnsupportedClassVersionError ?
I read from the doc :Thrown when the Java Virtual Machine attempts to read a class file and determines that the major and minor version numbers in the file are not supported , but couldn’t understand what does that mean.
What are the major and minor versions in the file ?
I launched an application in someone else machine when the following exception was thrown :
Exception in thread "main" java.lang.UnsupportedClassVersionError: client (Unsupported major.minor version 51.0)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:539)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
though it worked fine on my machine.
Different versions of the JDK compiler generate different class versions. For instance, Java 1.4 generates 48.0, 1.5 generates 49.0 and 1.6 50.0.
A JVM is generally able to load classes from JVMs “lesser” than itself but never greater. You are probably trying to use a class compiled for 1.6 on a 1.5 JVM, or the like.
A good tool for finding class versions is bcel if you are interested. In particular, it has a nice set of ant tasks.