Unsupported major.minor version 52.0 in Java + Eclipse + Linux [Solution]

The "unsupported major.minor version 52.0" error started to come after Java SE 8 release and the root cause of this error is trying to run a Java application compiled with JDK 8 into a JRE lower than Java SE 8 e.g. JRE 7 or JRE 6. This is very common because a developer has updated their compiler or IDE to Java SE 8 but many times their runtime is not upgraded to Java 8. If you remember, in Java you can run a class file compiled with a lower version say Java 6 to a higher version say JRE 8 because Java is backward compatible but vice-versa is not allowed. This make sense because Java SE 8 has features like lambda expressions, method reference, functional interface and new Date and Time API, which lower version JRE has no information. Depending upon where you getting this error e.g. Eclipse, NetBeans, IntelliJ IDEA or Android Studio, the solution could be different. All these IDEs has different settings for JRE but the bottom line is same, you need to configure these IDE to use JRE 8 to run the Java program compiled using Java 8.

The root causes of any java.lang.UnsupportedClassVersionError is always that you have compiled source file in higher JDK version and trying to run on lower JRE. The exact cause is printed on the version e.g. in the case of major.minor version 52.0, you know that class file is compiled with JDK 8 because major version 52 corresponds to Java SE 8.

You might have seen the Unsupported major.minor version 51.0 error couple of years back when JDK 7 was released because that came when a class file compiled using Java 7 was running on Java 6. The major version 51 corresponds to Java SE 7 release.




How to solve unsupported major.minor version 52.0 in Java

Now let's come back to the solution, how we are going to solve the major.minor version 52.0 error in Java? One of the reason is incorrect JRE in PATH environment variable.  If you are running the Java program from command prompt then make sure the PATH has been setup correctly.

Just print the PATH using echo %PATH% in Windows 8 and echo $PATH in Linux to check if any lower version JRE is not coming up higher in the PATH than JRE 8. This is the main reason you get "unsupported major.minor version 52.0" even after you have installed Java 8 on your machine.

If you see JRE 6 or JRE 7 coming up higher or there is no JRE 8 at all then just install the JRE 8 and make sure it come first in the PATH. Don't touch the classpath, this issue is not related to the classpath, it solely related to PATH and Java version used to run the program.

You can also check out Core Java Volume 1- Fundamentals to learn more about this error in Java.




Unsupported major.minor version 52.0 in Android Studio

Android Studio uses the value of JAVA_HOME to find the current Java version. Check the value of this environment variable and if it's not pointing to JDK 8 then make sure you correct the value of this environment variable. Don't forget to restart the Android studio if you unset JAVA_HOME while the android studio is running.

This should solve the problem of "unsupported major.minor version 52.0 error in Android Studio".  If you remember Android Studio is built from IntelliJ Idea, one of the popular Java IDE of both core Java and Java EE developers. See this article learn more about the unsupported major minor version error in Java.

Unsupported major.minor version 52.0  in Java



Unsupported major.minor version 52.0 in Eclipse

In Eclipse, the setting which is used to run a Java program is configured program by program basis. Just follow these steps to confirm that your program is running under JRE 8 and if not then make sure it does.

1) Go to "Run configurations" or "Debug configurations" (depending upon whether you are running or debugging Java program)
2) Go to JRE tab (the 3rd tab)
3) Check the value of Runtime JRE, if it's not Java SE 8 then choose the alternate JRE
4) If JDK 8 is not installed than Install Java 8 and add as JRE into Eclipse.
5) Follow the steps 1 to 3 and then run the Java program.

This should solve the "unsupported major.minor version 52.0 error in Eclipse".  You can also check out Eclipse in Action: A Guide for the Java Developer to learn more about how to setup Java in Eclipse.


Unsupported major.minor version 52.0  in Java and Eclipse



Unsupported major.minor version 52.0 in IntelliJ IDEA

Depending upon which operating system you are running IntelliJ IDEA, your solution could be different. Bottom line is to make sure your IntelliJ IDE is using the Java 8 for running your Java programs. For Mac OS X users you can do following to instruct IntelliJ should use Java 8

1) Go to /Applications/IntelliJ IDEA 14.app/Contents/bin/ folder
2) Add gradle.java.home=/Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home to idea.properties file.
You can find the idea.properties file in Mac OS X (10.9 - Mavericks) at in the above location (Applications/IntelliJ IDEA 14.app/Contents/bin/)
3) Restart IntelliJ IDEA.

IntelliJ IDEA uses Grade to compile and build your Java application.

How to fix Unsupported major.minor version 52.0 in Java IntelliJ Idea



Unsupported major.minor version 52.0 Linux

In order to solve this problem in Linux, make sure your Java application is using JDK 8 binary to run Java programs compiled on Java 8. If your application is using JAVA_HOME environment variable to locate Java then make sure you set it correctly to point JDK 8 installation as shown below:

export JAVA_HOME=/usr/lib/jvm/java-8-oracle

Make sure JAVA_HOME is pointing to correct JDK 8 installation directory.

Also,add JAVA_HOME on PATH as shown below:

export PATH = $PATH:$JAVA_HOME;

You can follow same steps to fix unsupported major.minor version 52.0 error in other UNIX based operating systems e.g. ubuntu, Solaris or IBM AIX.


That's all about how to solve unsupported major.minor version 52.0 error in Java. The root cause of error is that your Java program is compiled using Java 8 but the JRE running this program is of lower version e.g. JRE 7 or JRE 6. Just use the latest JRE i.e. JRE 8 to run this Java program. Mostly you need to check the PATH environment variable that JRE 8 is included and its the first one in the search path. Depending upon which OS you are running e.g. Windows 10, Linux or MAC OS X, you need to follow respective approach to set the PATH correctly.

Other Java troubleshooting guide
  • General Guide to solve java.lang.ClassNotFoundException in Java [guide]
  • How to solve java.lang.ClassNotFoundException:org.Springframework.Web.Context.ContextLoaderListener [solution]
  • How to connect to MySQL database from Java Program [steps]
  • How to solve java.lang.ClassNotFoundException: com.mysql.jdbc.Driver in Java MySQL? [solution]
  • java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory? [solution]
  • How to solve java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver in Java? [solution]
  • How to fix java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver in Java? [solution]
  • How to fix java.lang.ClassNotFoundException: org.postgresql.Driver error in Java? [solution]
  • How to avoid ConcurrentModificationException in Java? (solution)
  • Exception in thread "main" java.lang.IllegalStateException during Iterator.remove() (fix)
  • java.sql.SQLException: No suitable driver found for jdbc:jtds:sqlserver (solution)
  • Cause and solution of java.lang.ClassNotFoundException: com.mysql.jdbc.Driver (solution)


No comments:

Post a Comment