#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