Mac OS X 10.6.7 Текущий путь Java к JDK сбивает с толку

#java #macos

#java #macos

Вопрос:

У меня проблемы с пониманием (фактические пути против ссылок) для нескольких версий Java на моем Mac OSX. Обычно в Windows, если на моем компьютере установлено несколько версий, я могу просто выбрать путь, к какой версии я хочу, и использовать его. Но в MAC OS X я понимаю, что есть нечто, называемое ссылками, которое указывает на CurrentJDK, и если я захочу использовать другую версию, мне нужно будет изменить ссылку на CurrentJDK, верно? Но что меня смущает, так это то, что, как вы можете видеть ниже, все мои версии указывают на один и тот же CurrentJDK, что означает, что все версии указывают на текущую версию? Я ожидал, что только один из них будет указывать на CurrentJDK, и я мог бы просто изменить его на тот, который мне нужен, что здесь не так. Все, что мне нужно знать, это как найти путь к папке bin (Commands) для каждой версии, чтобы я мог просто использовать его для указания на CurrentJDK? Также скажите мне, как изменить ссылку на CurrentJDK.

 $ java -version

java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07-334-10M3326)
Java HotSpot(TM) 64-Bit Server VM (build 19.1-b02-334, mixed mode)

$ pwd

/System/Library/Frameworks/JavaVM.framework/Versions


$ ls -l

lrwxr-xr-x   1 root  wheel    5 Mar 20 11:12 1.3 -> 1.3.1
drwxr-xr-x   3 root  wheel  102 Dec  2  2009 1.3.1
lrwxr-xr-x   1 root  wheel   10 Mar 20 11:12 1.4 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10 Mar 20 11:12 1.4.2 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10 Mar 20 11:12 1.5 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10 Mar 20 11:12 1.5.0 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10 Mar 20 11:12 1.6 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10 Mar 20 11:12 1.6.0 -> CurrentJDK
drwxr-xr-x  10 root  wheel  340 Mar 20 11:13 A
lrwxr-xr-x   1 root  wheel    1 Mar 20 11:12 Current -> A
lrwxr-xr-x   1 root  wheel   59 Mar 20 11:12 CurrentJDK -> /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents
  

Комментарии:

1. запустите which java , чтобы определить, какую версию вы используете в данный момент. затем запустите /usr/libexec/java_home -version <what version you like such as 1.8> . Он распечатает связанную домашнюю папку Java.

Ответ №1:

Для разных типов JDK или установок у вас будут разные пути.

В Mac OS X Mavericks путь, который я нашел, выглядит следующим образом:

1) Встроенный JRE по умолчанию:

  /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
  

2) JDKS, загруженные с Apple:

  /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/
  

3) JDKS, загруженные из Oracle:

 /Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home
  

Ответ №2:

Скорее всего, у вас установлен только один jdk, поэтому все программные ссылки указывают на один и тот же jdk. Однако, если у вас установлено несколько jdk, вам нужно будет выбрать, какой из них использовать с приложением «Настройки Java» в вашем / Application / Utilities.

Программные ссылки, кстати, создаются с помощью ln -s команды из терминала.

Комментарии:

1. Я понимаю, о чем вы говорите. Я посмотрел настройки Java, и похоже, что у меня есть только одна версия Java SE 6. Итак, если у меня было несколько версий, если я просто включу одну из них, мой CurrentJDK будет указан на выбранную версию? На самом деле мне нужно было использовать как java 5, так и 1.6. Поскольку у меня уже есть 6, возможно ли по-прежнему установить версию 5 также без изменения существующей версии 6?

2. Да, у вас может быть как 1.5, так и 1.6. И для программ, запускаемых из командной строки, вы все равно можете настроить JAVA_HOME так, чтобы он указывал на желаемый jdk. Jdk, установленный в «Настройках Java», является jdk, используемым системой, и когда программы открываются щелчком по значкам.

3. Прямо сейчас я вижу, что мой JAVA_HOME пуст. Означает ли это, что установка JAVA_HOME не является обязательной и достаточно просто включить утилиту java preferences utility, чтобы указать требуемую версию CurrentJDK?

4. да, JAVA_HOME не является обязательным, но если вы установите jdk-1.5, вы все равно захотите, чтобы система использовала jdk-1.6, поэтому установка JAVA_HOME позволила бы вам использовать любой jdk, в то время как система использует официальный jdk-1.6

5. Быстрое обновление: приложение настроек / предпочтений Java теперь находится в System Preferences -> Other — Java, а не в /Application / Utilities

Ответ №3:

Просто запустите следующие команды:

 $ brew update
$ brew install jenv
$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(jenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile

$ jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/
  oracle64-1.8.0.45 added
  1.8.0.45 added
  1.8 added

$ jenv add /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home
  oracle64-1.7.0.79 added
  1.7.0.79 added
  1.7 added

$ jenv versions
* system (set by /Users/wanluwang/.jenv/version)
  1.7
  1.7.0.79
  1.8
  1.8.0.45
  oracle64-1.7.0.79
  oracle64-1.8.0.45

$ java -version
  java version "1.8.0_45"
  Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
  Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)

$ jenv global oracle64-1.7.0.79

$ java -version
  java version "1.7.0_79"
  Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
  Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)
  

Комментарии:

1. Rajas-MacBook-Pro:/$ $ brew update -bash: $: команда не найдена Rajas-MacBook-Pro:/$ $ brew install jenv -bash: $: команда не найдена Rajas-MacBook-Pro:/$ $ echo ‘путь экспорта=»$HOME/.jenv/bin:$PATH»‘ >> ~/.bash_profile -bash: $: команда не найдена Rajas-MacBook-Pro:/$ $ echo ‘eval «$(jenv init -)»‘ >> ~/.bash_profile -bash: $: команда не найдена Rajas-MacBook-Pro:/$ $jenv add /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home -bash: добавить: команда не найдена

2. @raja777m ~ Нет необходимости включать начальный символ ‘$’ при выполнении вашей команды на терминале. Оставьте это, и все должно работать.

Ответ №4:

От Apple Технические вопросы по Java:

Пользовательские настройки

В Mac OS X среда выполнения Java предоставляет java.util.prefs API, который поддерживается стандартным API настроек Mac OS X и каталогами. Просто используя этот чистый Java API, считывает и сохраняет настройки вашего приложения в ~/Library / Preferences в файле списка свойств Mac OS X. Для приложений, которые, возможно, уже имеют свой собственный формат настроек, эти настройки также должны храниться в каталоге ~/Library / Preferences. К этому каталогу можно получить доступ из кода Java, создав файл с путем System.getProperty(«user.home») «/Library/Preferences/» «com.example.your.Приложение». Приложение, которое должно иметь глобальные настройки для всех пользователей, могло бы вместо этого находиться в /Library / Preferences, однако этот каталог недоступен для записи пользователям, не являющимся администраторами.

Ответ №5:

установите $ JAVA_HOME=$(/usr/libexec/java_home) в вашем файле .bash_profile

или экспортировать JAVA_HOME=$(/usr/libexec/java_home);

echo $JAVA_HOME