Skip to content
Related Articles

Related Articles

How to Fix java.lang.UnsupportedClassVersionError in Java?
  • Last Updated : 28 Jan, 2021

The UnsupportedClassVersionError is a sub-class of the LinkageError and thrown by the Java Virtual Machine (JVM). When a class file is read and when major and minor version numbers are not supported, this error is thrown, and especially during the linking phase, this error is thrown

A sample snapshot of UnsupportedClassVersionError 

 

Situations when the error is thrown :

When we tried to compile a program using a higher version of Java and execute it using a JVM of a lower version, this error is thrown. But the reverse case is not true.

Hence, it is important to note the java versions 



 

Get the installed java version :

java –version  (In command prompt(windows), we can give)

Check java version

 

Fixing the program via command line :

In order to overcome the UnsupportedClassVersionError, we can either compile our code for an earlier version of Java or run our code on a newer Java version. It is about our choice of decision only. If a third-party library is used then, it is better to run on a newer java version and if it is for distribution, it is best to compile to an older version.

 



Using JAVA_HOME Environment Variable :

While doing Java programs, always it is good to set JAVA_HOME and setting that value in path

We can check that in command prompt in the below way also

C:\Windows\system32>echo %JAVA_HOME%
C:\Program Files\Java\jdk-9.0.4

 

Requirements to run a java program on a new JRE:

Move to the directory and locate the bin directory. For example, if the JRE is in location like

C:\Program Files\Java\jdk-11.0.2, then navigate till C:\Program Files\Java\jdk-11.0.2\bin

Execute the program as

java <filename>   // Even we can give filename with full package

 

Requirements to run a java program on an older JRE :

Example : 

C:\Program Files\Java\jdk1.8.0_31\bin\javac <filename along with package>

In order to ensure compatibility, we can point “-bootclasspath” at the rt.jar of the targeted JRE:

javac -bootclasspath "C:\Program Files\Java\jdk1.8.0_31\jre\lib\rt.jar" 
\ -source 1.8 -target 1.8 <filename>

[Applicable mainly to JDK 8 and lower]

But in JDK 9, the “–release” parameter was added to replace “-source” and “-target”. 

The “–release” option supports targets 6, 7, 8, 9, 10, and 11. As an example, let us use “–release” to target Java 8:

javac --release 8 <filename>

There are many IDEs are available for Java development

Let us see how we can overcome “UnsupportedClassVersionError” in Eclipse

Selecting JRE using Java Build Path->Installed JRE

Java compiler level selection :

Java compiler selection

Maven

We can control the version of Java when we build and package a file in Maven. When using Java 7 or older, we set the source and target for the compiler plugin.

Let’s set the source and target using compiler plugin properties:

–release option added in Java 9

Conclusion :

By setting the environment changes either via command-line way or via IDE way or via Maven way, we can overcome “unsupportedclassversion”.

Attention reader! Don’t stop learning now. Get hold of all the important Java Foundation and Collections concepts with the Fundamentals of Java and Java Collections Course at a student-friendly price and become industry ready. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up
Recommended Articles
Page :