Tuesday 14 April 2015

Java Runtime Exception: Unsupported major.minor version 52.0

For this post, I'm going to talk about java related error in Eclipse when we switch jre or jdk from 1.7 to 1.8.

Enviroment : 
i. OS: Windows
ii. IDE: Eclipse Luna

Exception Message:
Exception in thread "main" java.lang.UnsupportedClassVersionError: xxxxx/Main : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)


The root cause of this problem is due to the creation of the java project is in IDE with Java 8 (jre8 or jdk1.8). But the project maybe later imported into another IDE with Java 7 (jre7 or jdk1.7). This cause the mismatch of the java compiler version.

In order to solve this. Several things need to be in place.
  1. Ensure you have Eclipse support Java 8. I know Eclipse Luna and above support Java 8. I'm not sure about the other Eclipse. You to find out.
  2. Ensure you have install jdk1.8 or jre8 in your PC. You can download from Oracle
  3. If you're not sure about whether you have installed before, you can run the javac command in your console.
     
  4. You can also check the Environment variable of your Java_Home by right click on [Computer]->[Advanced system settings]->[Advanced] [Environment Variables]. Check the JAVA_HOME
  5. Make sure you path your JAVA_HOME.
  6. Now switch back to your Eclipse IDE.
  7. Goto [Windows]->[Preferences]->[Java]->[Compiler]. Ensure you select the JDK1.8 and also checked on the [Installed JREs] 
  8. If you're running Maven project. Ensure you configure your Maven to built for JDK1.8/JRE8.
  9. NOTE: If you're running standalone application, ensure your [RUN CONFIGURATIONS]->[JRE] is using the correct Runtime JRE. I realized that the it won't changed automatically eventhough we have insalled the JRE8.
  10. Hope either one of the steps help you solving your Unsupported major.minor version 52.0 exception.