Можно ли построить код Java с использованием JDK 1.6 для запуска на JRE 1.5? - PullRequest
6 голосов
/ 18 декабря 2009

Есть ли возможность собрать код Java для запуска на JRE 1.5 при компиляции с использованием JDK 1.6?

PS: я новичок в Java.

Ответы [ 4 ]

10 голосов
/ 18 декабря 2009

Да, вы можете. См. http://java.sun.com/javase/6/docs/technotes/tools/windows/javac.html и найдите раздел «Параметры кросс-компиляции». Короче говоря, вам нужно указать -target = 1.5 для javac. Конечно, Ant также поддерживает этот флаг.

10 голосов
/ 18 декабря 2009

Если вы скомпилируете свой код с 1.6, он не будет работать на 1.5. Если вы хотите, чтобы он работал в 1.5, вы можете скомпилировать код с 1.5, и он сможет работать на обоих.

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


Чтобы ответить на реальный вопрос.

  javac -target 1.5

Подробнее см. здесь .

6 голосов
/ 18 декабря 2009

Посмотрите параметры javac "-source" и "-target":

http://java.sun.com/javase/6/docs/technotes/tools/windows/javac.html

-источник релиз

Указывает версию принятого исходного кода. Допустимы следующие значения для деблокирования:

  • 1,3 Компилятор не поддерживает утверждения, обобщения и другие функции языка, представленные после JDK 1.3.
  • 1.4 Компилятор принимает код, содержащий утверждения, которые были введены в JDK 1.4.
  • 1,5 Компилятор принимает код, содержащий дженерики и другие языковые функции, представленные в JDK 5.
  • 5 Синоним 1.5.
  • 1,6 Это значение по умолчанию. В Java SE 6 не было внесено никаких изменений языка. Ошибки кодирования в исходных файлах теперь отображаются как ошибки, а не предупреждения, а ранее.
  • 6 Синоним для 1.6.

+

- цель версия

Создание файлов классов, предназначенных для указанной версии виртуальной машины. Файлы классов будут выполняться в указанной цели и в более поздних версиях, но не в более ранних версиях ВМ. Действительными целями являются 1,1 1,2 1,3 1,4 1,5 (также 5) и 1,6 (также 6).

Значение по умолчанию для -target зависит от значения -source: - Если -источник не указан, значение -target составляет 1.6

  • Если -source равен 1.2, значение -target равно 1.4
  • Если -source равен 1.3, значение -target равно 1.4
  • Для всех других значений -source значением -target является значение -source.
4 голосов
/ 18 декабря 2009

Все зависит от того, какие API вы используете. Такие вещи, как Swing, Instrumentation, JConsole и т. Д. Меняются со временем.

Если вы попробуете:

http://www.coderanch.com/t/382318/Java-General/java/New-Features-Java

содержит ссылки на страницы с указанием различий между каждой из последних основных версий:

http://java.sun.com/javase/6/webnotes/features.html

- список измененных / новых функций в последней версии.

Надеюсь, это даст вам представление.

И, конечно, вам нужно скомпилировать его под 1.5, чтобы запустить его с этой JRE.

...