Как компилировать .java с поддержкой более старых версий Java?

Я хочу скомпилировать мою .java(несколько) в один .jar, которые совместимы, по крайней мере, с Java 1.6 и более новыми, предпочтительно Java 1.5 и более новыми версиями Java. (У меня есть Java 1.7.0_5)

Ответы

Ответ 1

Да, вы можете установить версию компилятора во время компиляции. И скомпилируйте свой Java-код в старые версии java.

Из статьи Oracle: http://docs.oracle.com/javase/1.5.0/docs/tooldocs/windows/javac.html

Пример перекрестной компиляции

Здесь мы используем javac для компиляции кода, который будет работать на 1.4 VM.

% javac -target 1.4 -bootclasspath jdk1.4.2/lib/classes.zip \
             -extdirs "" OldCode.java

Вам также может понадобиться следующий параметр, чтобы установить обозначение версии вашего кода.

-source release

-Учитывает версию исходного кода.

Ответ 2

Вы можете использовать javac -target 1.5 <source files>.

Если вы используете систему сборки, Eclipse или какую-либо другую среду IDE для сборки баннеров, укажите, какой из них.

Ответ 3

Вы можете использовать самую новую версию JDK и установить исходный уровень в 1.5 - до тех пор, пока вы не используете классы/методы, которые были введены после 1.5, вы должны быть в порядке для всех версий JVM 1.5 и выше:

-source 1.5

Ответ 4

Как и в JDK 9, javac поддерживает новую возможность для кросс-компиляции

javac -release N ...

что эквивалентно

javac -source N -target N –bootclasspath rtN.jar

Ответ 5

Вы можете указать целевую версию компилятора ниже, чем версия сборки Java (все ответы в основном говорят об этом), но вы не должны: это довольно грязно, поскольку она работает только, если вы также поставляете библиотеки классов для реальной целевой версии, Если вы это сделаете, вам будет намного лучше, просто используя эту старую версию Java для компиляции. Гораздо чище и меньше материала для настройки. Для Java 9 варианты немного приятнее, но вам все еще нужен старый JDK, лежащий вокруг для rt.jar.

Что вы можете сделать, так это в вашем цикле ide и development использовать трюк -target/-bootclasspath, чтобы получить более быстрый компилятор и более эффективные предупреждения, но ИТ и выпускные сборки должны быть выполнены с целевой версией.