In this post, I will show you how to change Java version used to compile a project in Eclipse IDE. For example, you have to maintain an Eclipse project was developed at the time of Java 1.8. Now you want to upgrade the project to be compiled with Java 11.

To summary, here are the steps to change Java compiler version for a project in Eclipse IDE:

  1. Install JRE/JDK that supports the Java version you want to use.
  2. Add that JRE/JDK to Eclipse’s list of installed JREs
  3. Update Java Build Path for the project, pointing to the new JRE/JDK
  4. Change Java compiler compliance level.
You can skip the steps 1 and 2 if your project is already configured with JRE/JDK that supports the Java version to which you want to change.

Before going into each step in details, I think it’s worth to understand some background information first.

You know, JDK provides the javac tool for compiling Java source code but Eclipse doesn’t use javac. Instead, Eclipse uses its own internal compiler to provide more advanced features like incremental compilation – for quickly compiling only small changes you have made – not recompile the full project.

And Eclipse compiler requires JRE to run its compiled .class files. That’s why it’s not necessarily to have JDK to use Eclipse - just JRE is enough.

Note that the JRE that runs Eclipse IDE is not necessarily the one that is used by Eclipse compiler. You can have your Eclipse running under JRE 11 but the project is compiled with JRE 8.

Now, suppose that you have a project that is set to compile with Java 1.8. To know Java compiler settings, right-click on the project and click Properties. In the Properties dialog, navigate to Java Compiler section and you will see the following screen:

default java compiler 1.8 in eclipse



 

To change version of Java compiler for your project, uncheck “Use compliance from execution environment…”, the you can choose Java version from the dropdown list as below:

change java compiler compliance level

Change compiler compliance level from 1.8 to 11 – you will see a warning from Eclipse:

eclipse warning compiler level

This warning means that no compatible JRE for Java 11 configured in Eclipse. So click the hyperlink Installed JREs, which pops up the following dialog:

eclipse installed JREs

Click Add button. The next popup dialog appears:

eclipse add jre

Make sure Standard VM is selected, and click Next. And in the next screen, click Directory to browse to JDK home or JRE home that supports the Java compiler version you want:

add JRE home in eclipse

Here, you can see I choose JDK 14 home directory. Click Finish. And check the newly added JRE/JDK:

eclipse check new installed JRE

Click Apply and Close. Now in the project properties dialog, navigate to the Java Build Path section:

eclipse java build path

Select the JRE under Classpath and click Edit. Now, in the popup screen you can choose the execution environment for the JDK that supports the Java version you want to compile your project:

eclipse jre system library

Click Finish, and click Apply and close to apply compiler setting change and dismiss the project properties dialog. Then you’re all set.

NOTES: The Java compiler compliance level you can set depends on the version of Eclipse’s internal compiler. For example, Eclipse 2018-12 supports compilation of Java 11 and older versions even when you set to use JRE 14.

Watch the video:

 

Other Eclipse Tutorials:


About the Author:

is certified Java programmer (SCJP and SCWCD). He began programming with Java back in the days of Java 1.4 and has been passionate about it ever since. You can connect with him on Facebook and watch his Java videos on YouTube.



Add comment

   


Comments 

#4charan2023-10-02 07:16
How to change web applications in eclipse JRE library system-javaSE-21 to java2SE-?
Quote
#3MD. MAHADEE HASAN AB2022-10-09 13:17
Thanks. It helped me a lot.
Quote
#2Saloni2022-04-02 08:47
Hi, Thankyou so much for this amazing solution!!
Quote
#1Ranjith2021-09-22 05:15
hi bro, i like your content on java. could you write content about debugging the code for me ??
Quote