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.
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.
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:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With