Suhail Gupta
Suhail Gupta

Reputation: 23276

what is java.lang.UnsupportedClassVersionError?

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.

Upvotes: 7

Views: 5052

Answers (2)

fge
fge

Reputation: 121830

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.

Upvotes: 10

d-live
d-live

Reputation: 8036

That means your compiler version is more recent than the jvm version where you are trying to run the classes. Either downgrade your machine's java compiler or upgrade the other machine's runtime jvm.

Upvotes: 3

Related Questions