2009-07-07 3 views
1

Я собрал мой источник с Java версии 1.6, используя параметры -source 1.5 и -target 1,5 и компилятор оленья кожа жалуются на всех.Java и «вперед» Совместимость вопрос

Тем не менее, приложение не будет работать с java 1.5 из-за отсутствующих методов. Конечно, я мог бы переписать часть моего исходного кода на 1.5, но я не понимаю; не должен ли java байт-код в нижней части быть «спереди» совместимым?

Не превращены ли методы в байт-код? Можно ли скомпилировать 1.6 libs/methods (formely String.isEmpty()) на байт-код 1.5 и упаковать все это в архив?

ответ

3

Полный набор параметров командной строки, что вам нужно:

java -source 1.5 -target 1.5 -bootclasspath /usr/jdk/jdk1.5.0_17/jre/lib/rt.jar 

(Изменить загрузочный путь к классам, чтобы Однако ваша машина установка.)

Конечно, усовершенствование APIs в 1.6 не будет в 1,5 раз. 1.5 - это большая часть его срока службы, поэтому вам может потребоваться минимум 1,6.

+0

Только проблема, Mac OSX, которая говорит о своей единственной ОС с полностью интегрированной java, не поддерживает 1.6:/ –

+0

1.6, конечно, доступна для Mac OS X. Я считаю, что у них даже есть версия плагина 6u10. Я думаю, что они еще не достигли, к сожалению, 1.6 по умолчанию во всех поддерживаемых версиях Mac OS X. –

+0

Я думаю, что он доступен только в 64-битных версиях –

1

Я не верю, что Java перекомпилирует собственный код Java назад. Итак, если вы сделаете запрос 1.6, вы не сможете получить к нему доступ в 1.5

+0

Вы можете, если JRE, на котором вы работаете, составляет 1,6, все зависит от того, какой JRE запускает ваш код - он предоставляет библиотеки. –

6

Если вы имеете в виду базовые методы библиотеки Java, то нет, эти методы не будут преобразованы в байтовый код при компиляции; они уже были скомпилированы в байтовый код Sun (или сторонним дистрибутором JVM) и установлены в вашей операционной системе. Это , на которые ссылается и используются вашим скомпилированным кодом.

1

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

Если нет, вы должны быть в состоянии переопределить его в команде ant или команде компиляции CLI.

Если вы планируете использовать более старую JVM, это действительно нужно сделать, или вы можете использовать вызовы, которые не будут доступны.

1

Исходный параметр только проверяет компилятор на уровне синтаксиса языка (например, источник = 1.4 будет жаловаться, если он встречается с генериками), но не будет ограничивать вас только использованием API-интерфейсов, доступных в указанной версии Java.

Целевой параметр сделает файлы класса выходных файлов компилятора, которые могут использоваться средой выполнения указанной версии, но не будет (подобно источнику) проверять соответствие API.

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