2014-12-09 3 views
2

Я пытаюсь использовать сторонний API, где я получаю поддержку стороннего API до JDK 1.6.Установляет уровень соответствия компилятора eclipse java 1.6 так же, как и с помощью JDK 1.6?

У меня есть еще несколько проектов, которые построены с использованием JDK 1.7, и как часть продукта я также упаковываю JRE 1.7.

если уровень соответствия компилятора установлен в JDK 1.6, компиляция & Работа с использованием библиотек JDK 1.7 дает тот же результат, что и для компиляции & работает с использованием JDK 1.6?

Было бы безопасно требовать поддержки стороннего поставщика, если для уровня соответствия компилятора установлен JDK 1.6.

Обновление: Я предположил, что установка уровня компилятора в eclipse такая же, как настройка-источник & -target параметры javac.

Я не уверен, что компиляция с использованием источника установки JDK 1.7 & Цель 6/1.6 такая же, как и компиляция в jdk1.6.

ответ

1

Фактически вы можете указать файлы .class совместимость версии в «Preferences-> Java-> Compiler» (в зависимости от проекта), поэтому в худшем случае вы получаете выгоду от более позднего создания компилятора, возможно, точно такого же байт-кода, как и с использованием JDK 1.6.

«Соответствие требованиям 1.6», однако, не гарантирует, что вы получите точно такой же результат, как и с помощью JDK1.6, но стандарт java гарантирует, что приложения, созданные с 1.6, будут работать одинаково на> = 1,6 JRE.

Итак, если вы действительно боитесь несовместимости, создайте проект (на вашем сервере CI, я полагаю), с конкретным проектом 1.6 на машине с JRE 1.6 для этого и 1.7 для других проектов, 1.7 в вашем дистрибутиве, он гарантированно работает нормально Sun/oracle/java.

Если код построен с JDK 1.6 и используется другим кодом JDK> = 1.7, вы в порядке с версией. Вероятно, это случай многих банок, которые вы используете каждый день.

Однако создание кода с отметкой 1,6, с реальным JDK 1.6 - единственная разумная вещь, если вы боитесь реальных проблем мира (задействованных денег).

Таким образом, я думаю, что тогда вы можете «требовать поддержки», построить в 1.6 и использовать банку в 1.7.

4

Проблема заключается в изменении API Java между версиями. Есть несколько классов и методов, которые доступны в Java 7, но не на Java 6 и наоборот. Код компилируется с Java 7, но он не будет работать с Java 6 из-за отсутствия классов или методов.

Если вы не скомпилируете Java Java JDK, вы не можете быть уверены в этом на 100%.

2

Да, если вы скомпилируете с уровнем соответствия, установленным в 1.6, он сможет работать на java 6 - компилятор гарантирует это. Он также должен работать на java 7, так как JRE поддерживает обратную совместимость.

0

В моем опыте с Eclipse уровень соответствия, установленный для Java 5, не совпадает с компиляцией с JDK5. Это позволило методам Java 6 передавать компиляцию локально, когда установленная Java была установлена ​​на Java 6, а соответствие было установлено на 5, а затем наша сборка завершилась неудачно, когда файлы были проверены.

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