java.lang.UnsupportedClassVersionError
By:Roy.LiuLast updated:2019-08-11
Start a Java class and hits this java.lang.UnsupportedClassVersionError, what is class file version 52 56?
Error: A JNI error has occurred, please check your installation and try again Exception in thread "main" java.lang.UnsupportedClassVersionError: TestHello has been compiled by a more recent version of the Java Runtime (class file version 56.0), this version of the Java Runtime only recognizes class file versions up to 52.0 at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:763) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:468) at java.net.URLClassLoader.access$100(URLClassLoader.java:74) at java.net.URLClassLoader$1.run(URLClassLoader.java:369) at java.net.URLClassLoader$1.run(URLClassLoader.java:363) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:362) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:495)
Solution
Java version mismatch, this means that you compile the Java classes with JDK 12 (56) but try to run it in JDK 8 (52), read this from Wikipedia
Java SE 13 = 57 (0x39 hex) Java SE 12 = 56 (0x38 hex) Java SE 11 = 55 (0x37 hex) Java SE 10 = 54 (0x36 hex) Java SE 9 = 53 (0x35 hex) Java SE 8 = 52 (0x34 hex) Java SE 7 = 51 (0x33 hex) Java SE 6.0 = 50 (0x32 hex) Java SE 5.0 = 49 (0x31 hex) JDK 1.4 = 48 (0x30 hex) JDK 1.3 = 47 (0x2F hex) JDK 1.2 = 46 (0x2E hex) JDK 1.1 = 45 (0x2D hex)
To fix it, compile the Java classes with --release option, to target Java 8.
javac anyName.java --release 8
or Maven.
pom.xml
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin>
Note
The key is to make sure both the compile and runtime is using the same JDK.
The key is to make sure both the compile and runtime is using the same JDK.
From:一号门
COMMENTS