Понизить версию Java с 8 до 7

Я установил Java 1.8 от Oracle на Ubuntu, потому что я думал, что это будет лучшая, новейшая версия, совместимая с предыдущими. Но это не так. javac 1.8 создает байт-код, работающий только на java-8-oracle, scala не запускается.

До обновления использовал java-7-openjdk, все было нормально. Хотя я могу выбрать свою старую виртуальную машину с помощью sudo update-alternatives --config java, но мне также нужно иметь возможность выбрать более старый компилятор. Как я могу это сделать?


person Vaidotas    schedule 27.04.2014    source источник
comment
docs.oracle.com/javase/8/ документы / technotes / guides / install /   -  person David Williams    schedule 18.11.2014


Ответы (3)


Используйте флаг -target для генерации байт-кода для более ранней версии. Например. javac -target 1.5 FooBar.java.

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

person Kayaman    schedule 27.04.2014
comment
Ваше предложение дает javac: целевой выпуск 1.7 конфликтует с исходным выпуском по умолчанию 1.8. - person Vaidotas; 27.04.2014
comment
Затем измените совместимость источника с -source 1.7. - person Kayaman; 27.04.2014
comment
Лучше, но я все равно получаю предупреждение: [options] путь к классу начальной загрузки не установлен вместе с -source 1.7. Но, по крайней мере, теперь я могу запускать программы, спасибо. - person Vaidotas; 27.04.2014
comment
Обратите внимание, что это не помешает вам использовать API-интерфейсы, доступные только в Java SE 8. Вам потребуются дополнительные шаги: docs.oracle.com/javase/8/docs/technotes/tools/unix/ По этой причине я рекомендую использовать JDK, на самом деле вы таргетинг. - person Puce; 27.04.2014

По крайней мере, для Oracle JDK (не уверен в OpenJDK): установите пакет oracle-java7-set-default или oracle-java8-set-default, в зависимости от того, какую версию java вы хотите использовать по умолчанию в своей системе.

Вы можете получить его по адресу: http://ppa.launchpad.net/webupd8team/java/ubuntu (включая фактические JDK Oracle) См .: https://launchpad.net/~webupd8team/+archive/java

В качестве альтернативы вы можете установить переменные среды PATH и JAVA_HOME, например. в / etc / environment

Тем не менее, когда вы компилируете, вы можете указать исходный и целевой уровень до 1.7, что будет генерировать байт-код, совместимый с Java SE 7, также при использовании JDK 8. Но обратите внимание, что он не будет проверять, используете ли вы какой-либо API, недоступный в Java SE. 7.

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

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

person Puce    schedule 27.04.2014

  1. Установите для переменной среды java_home более старую версию и скомпилируйте файлы Java, используя ее. Убедитесь, что java.exe в переменной пути относится к более ранней версии.

  2. Используйте флаг -target при компиляции.

person Anand Kulkarni    schedule 25.05.2016