2014-01-26 2 views
0

Java-компилятор (sun javac) позволяет пользователю указать уровень совместимости исходного кода (с -source), а также сгенерированный уровень совместимости с байт-кодом (с -target).компиляция источника java с использованием другой версии источника и байткода

Должны ли быть опасения, если я должен использовать другой уровень для источника и цели (например, скомпилировать 1,7 источника до 1,5 байт-кода или наоборот)?

ответ

0

Должны ли быть опасения, если я использую другой уровень для источника и цели (например, скомпилировать 1,7 источника в 1,5 байт-код или наоборот)?

Да. Конечно, новые API-интерфейсы, разработанные для Java 7, не будут существовать в Java 1.5, поэтому, если вы используете эти API-интерфейсы, ваше приложение не будет работать

0

Наиболее распространенной проблемой является то, что библиотеки, доступные для Java 7 и недоступные на Java 5.0 ,

По этой причине вам необходимо скомпилировать, используя те же библиотеки, что и ваша целевая система, чтобы убедиться, что вы не используете библиотеку, которая недоступна.

BTW Компилятор Sun/Oracle javac поддерживает только компиляцию с 1.1 по 1.0, иначе исходная и целевая версии должны быть одинаковыми.

+0

Я беру его по библиотеке, вы имеете в виду API? Что касается вашей стороны, спасибо, что это приводит меня к тому, что я обнаружил, что такая кросс-компиляция работает только вверх (версия с более низким исходным кодом до более высокой версии байт-кода) из [здесь] (http://docs.oracle.com/javase/7 /docs/technotes/tools/windows/javac.html). – bluearth

+0

@bluearth Вы не можете скомпилировать источник Java 5.0 для чего-либо, кроме Java 5.0. Он будет работать на Java 7 JVM, но он все равно будет источником Java 5.0. –

0

компиляция 1.7 источника до 1,5 байткода ...

Если вы имеете в виду, что вы пытаетесь скомпилировать с помощью javac -source 1.7 -target 1.5 то я боюсь, что не будет работать. Для включения новых функций языка Java 1.7 цель должна быть 1,7. Это общая картина. Когда новые языковые функции добавляются, номер версии файла класса обычно увеличивается, и вам обычно нужно скомпилировать соответствующую целевую версию (или выше).

javac -source 1.5 -target 1.7javac -source 1.5 -target 1.5 будет работать, хотя в последнем случае вы можете получить предупреждение о компиляторе, если вы не скомпилируете файл версии rt.jar Java 1.5.

Смежные вопросы