I have seen the compile options like discussed in Which JDK's distributions can run `javac -source 1.6 -target 1.5`?. I understand the individual options for source and
Be sure to also set bootclasspath to ensure your program will work on older VMs.
From the javac documentation:
Cross-Compilation Example
The following example uses javac to compile code that will run on a 1.6 VM.
C\:>javac -source 1.6 -target 1.6 -bootclasspath C:\jdk1.6.0\lib\rt.jar -extdirs "" OldCode.javaThe
-source 1.6option specifies that version 1.6 (or 6) of the Java programming language be used to compileOldCode.java. The option-target 1.6option ensures that the generated class files will be compatible with 1.6 VMs. Note that in most cases, the value of the-targetoption is the value of the-sourceoption; in this example, you can omit the-targetoption.You must specify the
-bootclasspathoption to specify the correct version of the bootstrap classes (thert.jarlibrary). If not, the compiler generates the following warning:C:\>javac -source 1.6 OldCode.java warning: [options] bootstrap class path not set in conjunction with -source 1.6If you do not specify the correct version of bootstrap classes, the compiler will use the old language rules (in this example, it will use version 1.6 of the Java programming language) combined with the new bootstrap classes, which can result in class files that do not work on the older platform (in this case, Java SE 6) because reference to non-existent methods can get included.