Target different version of JRE
Solution 1
From the command line, change your call to:
javac -source 1.7 -target 1.7 HttpsTest.java SSLSocketFactoryEx.java
The documentation for javac (for JDK 8) is here.
The documentation for javac (for JDK 9) is here.
Note: In JDK 9, -target is replaced with --release.
Solution 2
If you are using eclipse you can set compiler compliance level in the project properties-> Java Compiler. So your code is compiled for the chosen Java version. See here:
jww
Updated on June 29, 2022Comments
-
jww almost 2 years
I'm testing Java on a Windows Surface Pro. The Surface Pro has Java 7 Update 55, but does not have the JDK installed.
I compiled a program on my MacBook from the command line using
javac
. The MacBook Has Java 8 Update 5 and it includes the JDK (obviously because I compiled on the MBP).When I move the program from the MackBook to the Surface Pro, I get the following error. Here, "moving the program" means copying the two
*.class
files to the new machine and trying to execute the byte codes.java.lang.UnsupportedClassVersionError: HttpsTest : Unsupported major.minor version 52.
Trying to compile with target information results in:
$ javac -target 1.7 HttpsTest.java SSLSocketFactoryEx.java javac: target release 1.7 conflicts with default source release 1.8
javac -help
does not list any options to control the version information of the compiled program (other thantarget
, which does not appear to work).How do I compile my source files for down level versions of a JRE? In this case, I'm targeting Java 7 from a Java 8 machine.
-
Daniel Stolz over 6 years@sunleo I answered your question in a separate post.
-
sunleo over 6 yearsThanks for your answer.
-
Eric over 5 years
javac --release 7 Tmp.java
for javac with version 9 ~ 11, the available numbers for--release
are7
,8
,9
,10
,11
.