Target different version of JRE

12,079

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:

enter image description here

Share:
12,079
jww
Author by

jww

Updated on June 29, 2022

Comments

  • jww
    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 than target, 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
    Daniel Stolz over 6 years
    @sunleo I answered your question in a separate post.
  • sunleo
    sunleo over 6 years
    Thanks for your answer.
  • Eric
    Eric over 5 years
    javac --release 7 Tmp.java for javac with version 9 ~ 11, the available numbers for --release are 7, 8, 9, 10, 11.