Подтвердить что ты не робот

Как вернуться к Java 1.6 на Mac OS X 10.7.5

У меня есть программа установки 1.6. Я использовал его. Он не меняет мою установку Java, и не говорит, что есть более старая версия, но она завершает установку.

Я немного работал с символическими ссылками, но независимо от того, что я делаю, работает

java -version

в терминале всегда получается

Daves-MacBook-Pro:core-server dave$ java -version
java version "1.7.0_07"
Java(TM) SE Runtime Environment (build 1.7.0_07-b10)
Java HotSpot(TM) 64-Bit Server VM (build 23.3-b01, mixed mode)

Мое приложение работает с GAE, который НЕ использует Java 1.7 вообще. Таким образом, я не могу скомпилировать свой код, используя 1.7! Я должен использовать 1.6, но мне не удалось найти способ удалить 1.7 или иначе принудительно построить/компилировать на 1.6.

Наконец, я запускаю инструмент построения в командной строке, поэтому изменение настроек проекта в Eclipse не похоже на то, что это поможет.

4b9b3361

Ответ 1

Инструменты командной строки java, javac и т.д. чувствительны к значению переменной среды JAVA_HOME и будут использовать 1.6, если эта переменная указывает на 1.6 JDK. Инструмент /usr/libexec/java_home - ваш друг здесь. Запуск

/usr/libexec/java_home

выведет соответствующее значение JAVA_HOME для самого современного JDK в вашей системе. Это будет Java 7, но вы можете применить ограничения, используя флаг -v, например

/usr/libexec/java_home -v '1.6*'

вернет значение JAVA_HOME для наилучшего доступного 1.6 JDK в вашей системе. Вы можете использовать это значение для установки JAVA_HOME:

export JAVA_HOME=`/usr/libexec/java_home -v '1.6*'`

либо как одноразовый для конкретного сеанса терминала, либо постоянно для всех будущих сеансов терминала, добавив указанную выше строку в файл .bash_profile в вашем домашнем каталоге.


$ export JAVA_HOME=`/usr/libexec/java_home -v '1.6*'`
$ java -version
java version "1.6.0_37"
Java(TM) SE Runtime Environment (build 1.6.0_37-b06-434-11M3909)
Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01-434, mixed mode)
$ export JAVA_HOME=`/usr/libexec/java_home -v '1.7*'`

$ java -version
java version "1.7.0_09"
Java(TM) SE Runtime Environment (build 1.7.0_09-b05)
Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode)

Ответ 2

Если вам нужно написать код, который вы хотите запустить в предыдущей версии Java, вы можете изменить флаги компиляции. Это может быть все, что вам нужно, и

например.

javac -source 1.6 -target 1.6 MyClass.java

Источник arg утверждает, что источник написан в этой версии Java, поэтому List<String> strings = new ArrayList<>(); будет ошибкой компиляции. Target сообщает компилятору компилировать байт-код, который нацелен на указанную версию JVM. Хотя я думаю, что 1.7 полностью обратно совместимо с 1.5 и 1.6.

Ответ 3

У меня возникла аналогичная проблема. После установки JDK7 некоторые из моих приложений больше не работали. Мне нужно было вернуться к JDK6, и я сделал это по-другому. Я заметил, что в моей/System/Library/Frameworks/JavaVM.framework/Versions/он показал следующее:

lrwxr-xr-x  1 root  wheel   10 Oct 25 17:01 1.4 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Oct 25 17:01 1.4.2 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Oct 25 17:01 1.5 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Oct 25 17:01 1.5.0 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Oct 25 17:01 1.6 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Oct 25 17:01 1.6.0 -> CurrentJDK
drwxr-xr-x  8 root  wheel  272 Oct 25 18:06 A
lrwxr-xr-x  1 root  wheel    1 Oct 25 17:01 Current -> A
lrwxr-xr-x  1 root  wheel   59 Nov 20 21:40 CurrentJDK -> /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/

поэтому я удалил символическую ссылку CurrentJDK

 sudo rm CurrentJDK

и повторно создал символическую ссылку, указывающую на JDK6, которая все еще находится на моем Mac

sudo ln -s  /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/ CurrentJDK

и это сделало трюк для меня

java -version
   java version "1.6.0_65"
   Java(TM) SE Runtime Environment (build 1.6.0_65-b14-462-11M4609)
   Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-462, mixed mode)