Как установить определенный JDK на Mac OS X?


197

Я хочу установить определенный JDK (последний, например). Для этого я пошел на домашнюю страницу загрузки JDK: http://java.sun.com/javase/downloads/index.jsp . Я искал версию для Mac, но я немного удивлен, увидев только загружаемые версии для Linux, Windows и Solaris ...

Вот сообщение для Mac:

«Apple Computer поставляет свою собственную версию Java. Используйте функцию« Обновление программного обеспечения »(доступно в меню Apple), чтобы убедиться, что у вас установлена ​​самая последняя версия Java для вашего Mac».

ОК, НО ... когда я обновляю Java с Mac, у меня есть JRE, а не JDK ...

Я не понимаю, почему не существует версии JDK, которую легко загрузить / установить (например, как распаковать файл?) Для Mac ...


70
Знаменитый вопрос ... вы должны принять ответ. ;)
Гари

Финк предлагает решение для этого.
Даниил

10
Обратите внимание, что Java 7 теперь поставляется Oracle - большинство ответов и вопросы относятся к более раннему состоянию
мммммм

Ответы:


44

В комментарии к ответу @ Thilo @mobibob спросил, как установить JAVA_HOME в вашем .bash_profile на Mac. Ответ:

export JAVA_HOME=`/usr/libexec/java_home` 

Это будет динамически назначать JAVA_HOME местоположение первого JDK, указанного на вкладке «Общие» утилиты «Java Preferences».

См. Технический вопрос и ответ Apple 1170: https://developer.apple.com/library/content/qa/qa1170/_index.html

РЕДАКТИРОВАТЬ:

Если вы предпочитаете круглые скобки бэкстикам для подстановки команд, это также работает:

export JAVA_HOME=$(/usr/libexec/java_home)

20

Как говорится в сообщении, вы должны перейти на Apple, а не Sun, для Java на Mac. Насколько я знаю, Apple JDK 6 по умолчанию установлен на Mac OS X 10.6 (Snow Leopard). Может быть, вам нужно установить инструменты разработчика с установочного DVD-диска Mac OS X (инструменты dev могут быть установлены с DVD-диска ОС).

Смотрите: http://developer.apple.com/java/

ПРИМЕЧАНИЕ. Этот ответ от 16 октября 2009 г. устарел; Вы можете получить JDK для Mac OS X с обычной страницы загрузки JDK на веб-сайте Oracle.



10

Я купил MacBook Pro вчера ( Mac OS X v10.8 (Mountain Lion)), и JDK по умолчанию не установлен ...

Помимо javac, я также обнаружил, что на нем не установлены такие пакеты, как SVN . Оказывается, вы можете получить все со страницы разработчика Apple (вам нужно будет зарегистрироваться с помощью AppleID). SVN является частью пакета «Инструменты командной строки».

Введите описание изображения здесь

Вот что происходит на свежем MacBook:

Введите описание изображения здесь

Введите описание изображения здесь

Надеюсь, это поможет другим новичкам, как я;)


5
+1. Ситуация немного изменилась с Mountain Lion. Также обратите внимание, что, хотя Apple предлагает дополнительную установку Java, это только более старая версия Java 6. Текущие версии Java для OS X теперь распространяются самой Oracle.
Тило


4

Объяснение заключается в том, что JDK немного специфичен и не содержит библиотеки tools.jar . Для моей разработки мне нужна эта библиотека, а в Mac JDK ее нет:

(См. Http://developer.apple.com/mac/library/documentation/Java/Conceptual/Java14Development/02-JavaDevTools/JavaDevTools.html )

tools.jar не существует. Классы, обычно расположенные здесь, вместо этого включены в classes.jar. Скрипты, которые полагаются на существование tools.jar, должны быть соответствующим образом переписаны.

Это отстой!


1
Ahhhhhhh !!! Как вы обнаружили, tools.jarон уже включен в среду выполнения для Mac OS X. Поэтому поиск tools.jarна Mac не является правильным подходом, чтобы узнать, является ли это JDK или JRE :)
Pascal Thivent

Спасибо за ваш ответ, вы правы. Мне нужно было получить библиотеку tools.jar для конкретного проекта, и для меня это был подход к распознаванию jdk;)
ajeanson

4

Самый простой способ - использовать Homebrew . Установите Homebrew и затем:

brew tap caskroom/versions
brew cask install java7

Вы можете получить список всех доступных версий, используя следующую команду: brew cask search java


3

Компиляция с -source 1.5 -target 1.5 (в среде JDK 6) будет учитывать только те языковые элементы, которые были в версии 1.5 и более ранних. Отлично. Но в 6 не было никаких языковых изменений. Проблема с этим подходом (на Mac с 1.6) заключается в том, что использование классов, вышедших ПОСЛЕ 1.5, все равно будет компилироваться, поскольку они существуют в rt.jar. Таким образом, можно запустить в 1.5 env и получить исключение для класса not found без предварительного предупреждения при компиляции. Я нашел это трудным путем с javax.swing.event.RowSorterEvent / Listener. Оба вошли в "С 1.6", но не пойманы с -source 1.5



3

Начиная с Mac OS X 10.6 (Snow Leopard), вы можете запускать Java 6 в 32-битном режиме на 32-битном или 64-битном процессоре Intel с Mac.

Если вы не можете перейти на Snow Leopard, Soy Latte - это предварительно скомпилированная версия Java 6 для Intel 32-bit.


3

Существуют различные хитрые проблемы с наличием нескольких версий Java (собственной Apple 6 и Oracle JDK 7 или даже 8) в одной системе Mac OS X и использованием разных версий для разных приложений. Я потратил некоторое время на то, чтобы описать свой опыт установки и настройки различных версий JDK в Mac OS X 10.9.2 .


1

Я думаю, что этот другой вопрос переполнения стека может помочь:

Как получить JDK 1.5 на Mac OS X

В основном это говорит о том, что если вам нужно скомпилировать или выполнить приложение Java с более старой версией JDK (например, 1.4 или 1.5), вы можете сделать это, используя 1.6, потому что он обратно совместим. Для этого вам нужно добавить параметр -source 1.5и / или -target 1.5в опциях javac или в вашей IDE.


1

JDK - это Java Development Kit (используется для разработки программного обеспечения Java).

JRE - это среда выполнения Java (используется для запуска любого файла .jar «Программное обеспечение Java»).

JDK содержит JRE внутри.

В Windows, когда вы обновляете Java, он обновляет JRE автоматически.

На Mac у вас нет разделенного JRE, у вас он есть, но внутри JDK, поэтому при обновлении Java он обновит ваш JRE, который находится внутри вашего JDK; он не устанавливает JDK для вас. Вы должны получить это откуда-то еще.


1
Я думаю, что вы имели в виду JDK вместо IDK. Я пытался редактировать, но переполнение стека говорит, что изменения должны быть длиннее 6 символов. Просто упомяну это, чтобы избежать путаницы.
веб-червь


1

Так как большинство ответов устарели, вот что работает на конец 2018 года при условии, что

  1. Вы хотите установить GPL-версию OpenJDK. [0]
  2. Вы не хотите устанавливать Homebrew

В этом случае возьмите нужную версию из одного из многих доступных свободно используемых выпусков OpenJDK, например:

Некоторые из них включают установщики, но если нет, вы можете сделать следующее. Предполагая здесь версию 11.0.1 для Mac. В вашей любимой оболочке запустите:

tar -xzf openjdk-11.0.1_osx-x64_bin.tar.gz
sudo mv jdk-11.0.1.jdk /Library/Java/JavaVirtualMachines
# Fix owner and group
sudo chown -R root:wheel /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk
# (Optional) Check if the new JDK can be found
/usr/libexec/java_home
=> /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home

[0] Обратите внимание, что фирменный JDK Oracle имеет значительные лицензионные ограничения, позволяющие использовать его в основном только для тестирования, то есть не для производства. Если у вас нет соглашения о поддержке с Oracle, то мне кажется рискованным использовать их JDK, тем более что различия с OpenJDK минимальны .

Изменить: добавлено больше вариантов


1
Я предлагаю вам указать загрузку с AdoptOpenJDK.net , а затем следовать вашим инструкциям, избегая тем самым юридических и проблем поддержки версий Oracle.
Василий Бурк

0

Как правило, вы не можете устанавливать на Mac другие версии Java, кроме тех, которые предоставляются Apple через Software Update. Если вам нужна Java 6, у вас должен быть 64-битный компьютер Intel. У вас всегда должны быть установлены Java 5 и 1.4 и, возможно, 1.3, если у вас хотя бы OS X 10.4.

Если у вас ОЧЕНЬ много локоть смазки и вы готовы работать с бета-версии программного обеспечения, вы можете установить OpenJDK под OS X, но я не думаю, что вы хотите пойти туда.


Я знаю, именно поэтому я добавил этот комментарий. Возможно, следовало написать немного более длинный комментарий, чтобы перейти по ссылке :-)
Neeme Praks
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.