Как получить JDK 1.5 на Mac OS X - PullRequest
22 голосов
/ 17 мая 2010

Мне нужно написать код для унаследованного приложения, которое все еще работает с JDK 1.5. К сожалению, похоже, что в OS X не установлен 1.5 JDK; это просто ссылки на 1.6:

/System/Library/Frameworks/JavaVM.framework/Versions $ ls -l
lrwxr-xr-x  1 root  wheel    5 Apr 26 11:53 1.3 -> 1.3.1
drwxr-xr-x  3 root  wheel  102 Feb 11 15:33 1.3.1
lrwxr-xr-x  1 root  wheel   10 Apr 26 11:53 1.4 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Apr 26 11:53 1.4.2 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Apr 26 11:53 1.5 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Apr 26 11:53 1.5.0 -> CurrentJDK
lrwxr-xr-x  1 root  wheel    5 Apr 26 11:53 1.6 -> 1.6.0
drwxr-xr-x  7 root  wheel  238 Apr 26 11:53 1.6.0
drwxr-xr-x  8 root  wheel  272 Apr 26 11:53 A
lrwxr-xr-x  1 root  wheel    1 Apr 26 11:53 Current -> A
lrwxr-xr-x  1 root  wheel    3 Apr 26 11:53 CurrentJDK -> 1.6

По http://developer.apple.com/java/faq/ похоже, что Java является частью обновления ОС ... Я на Mac OS X v10.6.3 (Snow Leopard). Есть ли способ получить реальный 1.5 JDK, установленный в этой версии ОС?

Или мне нужно попытаться найти старую версию OS X, прежде чем я смогу выполнить эту работу?

Ответы [ 8 ]

12 голосов
/ 09 ноября 2010

Посмотрите на http://wiki.oneswarm.org/index.php/OS_X_10.6_Snow_Leopard, как получить и установить 1.4 и 1.5 JDK на Snow Leopard.Также имейте в виду, что всякий раз, когда вы запускаете Обновление программного обеспечения и устанавливаете обновление JDK, вам нужно будет «исправить» символические ссылки на 1.4 и 1.5 JDK.

ОБНОВЛЕНИЕ: в качестве стороныобратите внимание, для тех, кто разрабатывает с несколькими JDK на OS X, взгляните на эту удобную небольшую утилиту для переключения JDK из командной строки: setjdk .

7 голосов
/ 24 апреля 2011

Здесь действительно две проблемы:

  1. Установка старой версии Java , и , не позволяющая Обновлению программного обеспечения удалить ее.
  2. Сообщая приложениям, которым требуется более старая версия, где его найти , и в то же время позволяя всем остальным использовать преимущества последней версии.

У меня нет ничего, чтобы добавить (пока) к тому, что уже было написано об установке старой версии Java, однако, согласно этому посту от Майка Свинглера , Java Runtime Engineer в Apple:

Никто не может и не должен изменять символические ссылки в / System / Library / Frameworks / JavaVM.framework, за исключением обновлений программного обеспечения Apple (и мы не хотим этого делать, потому что это неизбежно кого-то нарушает)

Другими словами, обновление ссылок операционной системы на старую копию Java является сомнительной практикой , поскольку оно заставляет каждое Java-приложение в системе использовать старую версию Java.

Правильный способ - установить JAVA_HOME на правильную версию Java по мере необходимости. Вы можете сделать это, выполнив /usr/libexec/java_home, чтобы получить путь к определенной версии. Например, чтобы получить путь к версии 1.5:

/usr/libexec/java_home --version 1.5

6 голосов
/ 17 мая 2010

Вам не нужна копия Java 1.5 для ее разработки; Java 1.6 обратно совместима с Java 1.5, поэтому все, что будет работать на 1.5, будет работать на 1.6. Флаги -source и -target могут быть полезны, чтобы гарантировать, что все работает на 1.5. Тем не менее, эта статья объяснит, как получить копию Java 1.5 на Snow Leopard. Имейте в виду, однако, что это может привести к повреждению вашей системы.

5 голосов
/ 17 мая 2010

Если вы пишете код в Eclipse или, возможно, в какой-либо другой среде IDE, вы сможете настроить его для соответствия требованиям 1.5.

Если вы используете javac напрямую, вы можете попробовать опции javac -source 1.5 и / или -target 1.5, которых может быть достаточно для того, что вы делаете? 1.6 JDK должен быть в состоянии произвести 1.5-совместимый код.

3 голосов
/ 18 января 2012

Самый простой способ - использовать этот скрипт Бриса Дютхейла . Сохраните скрипт, загрузите DMG из Apple (скрипт сообщит вам URI) и запустите скрипт. Voila!

3 голосов
/ 17 марта 2011

Спасибо, это прекрасно работает: http://wiki.oneswarm.org/index.php/OS_X_10.6_Snow_Leopard

Как ни странно, вы должны выполнить шаги по переименованию в инструкциях, где вы модифицируете символические ссылки для 1.5 и 1.5.0 для фактического леопарда Java 1.5 - если вы этого не делаете и просто пытаетесь запустить двоичный файл Java, вы получите ошибку шины!

В любом случае, благодаря этим шагам у меня теперь есть настоящий Java 5 JDK для компиляции и запуска в Eclipse, что избавляет меня от лотов проблем. Во-первых, я могу мгновенно находить и удалять ссылки на методы только для Java 1.6. Это великолепно. Раньше они появлялись только в QA, или даже хуже, когда один из немногих клиентов, все еще использующих Java 5, пытался запустить нашу программу. Который был. Bad.

Вот почему "поддержка" JDK5, в то время как просто указание символических ссылок на Java 6, недостаточно хороша для разработки.

0 голосов
/ 09 марта 2011

Хотя можно использовать флаги -source и -target, они не всегда генерируют код, который работает на всех старых JRE. У меня определенно были случаи, когда при попытке бэк-компиляции к более старой спецификации создавался код, который отлично работал для некоторых пользователей, но не работал на других. Чтобы быть уверенным в том, что каждый, кто использует JRE 1.5 или 1.4, сможет запустить ваш код, вам, вероятно, следует делать производственные сборки с JDK 1.5 или 1.4.

Я нашел эти инструкции очень полезными для установки "настоящих" 1.5 и 1.4 JDK под снежным барсом: http://codethought.com/blog/?p=233

0 голосов
/ 17 мая 2010

Для этого вам нужна более старая версия OS X.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...