Неверная версия терминала Mac OSX Java
хорошо, я немного новичок в Macs и OSX, но я взял один, чтобы я мог сделать некоторые устранения неполадок на моих программах Java с одним, так как компания, в которой я работаю, использует комбинацию машин OSX и Windows. Проблема, с которой я сталкиваюсь, заключается в том, что когда я устанавливаю Java 7 с веб-сайта Oracle, он обновляет меню настроек и, похоже, выполняется .jar-файлы правильно при двойном щелчке по ним, но версия окна терминала по-прежнему 1.6.0_43 и работает так же .jar-файл с терминала приводит к ошибкам во время выполнения из-за более старой версии.
когда я перехожу к /Library/Java/ JavaVirtualMachines / мне представляется пустая папка. Из того, что я видел в других статьях, здесь должна быть папка версии Java 1.7.0. Есть идеи, что происходит? Как я могу заставить терминал использовать правильную версию Java?
Edit: @DWilches прокомментируйте его оригинальный ответ: (1)
total 64
lrwxr-xr-x 1 root wheel 10 Mar 17 21:38 1.4 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 Mar 17 21:38 1.4.2 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 Mar 17 21:38 1.5 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 Mar 17 21:38 1.5.0 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 Mar 17 21:38 1.6 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 Mar 17 21:38 1.6.0 -> CurrentJDK
drwxr-xr-x 8 root wheel 272 Mar 17 21:38 A
lrwxr-xr-x 1 root wheel 1 Mar 17 21:38 Current -> A
lrwxr-xr-x 1 root wheel 59 Mar 17 21:38 CurrentJDK -> /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents
(2)
ls -ld /usr/bin/java
lrwxr-xr-x 1 root wheel 74 Mar 17 21:38 /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
редактировать: извините за ошибка с новым ответом, слишком привыкли к сайтам, которые блокируют редактирование исходного сообщения после столь долгого времени...
4 ответа:
JDK
на Mac OS,
/usr/bin/java
и друзья-это заглушки, которые делегируют реальные команды JDK. Эти заглушки уважают настройки вашегоJAVA_HOME
переменная окружения, но для этого вам нужно установить JDK (от http://www.oracle.com/technetwork/java/javase/downloads/index.html) в отличие от JRE (от http://java.com).JDK устанавливается в
/Library/Java/JavaVirtualMachines/jdk1.7.0_NN.jdk
(для любого значения NN), поэтому установите свойJAVA_HOME
переменные среды/Library/Java/JavaVirtualMachines/jdk1.7.0_NN.jdk/Contents/Home
сделать/usr/bin/java
использовать 1.7. Вы можете переключиться обратно на 1.6, просто указав свойJAVA_HOME
до . Вы можете использовать/usr/libexec/java_home
инструмент для автоматического поиска нужного значения, например, чтобы сделать/usr/bin/java
используйте Java 7 Вы можете сделатьexport JAVA_HOME=`/usr/libexec/java_home -v '1.7*'`
и сделать его использовать Java 6 Вы можете сделать
export JAVA_HOME=`/usr/libexec/java_home -v '1.6*'`
то же самое относится к Java 8 (используя
-v '1.8*'
). Это позволит подобрать последний установленный JDK для соответствующего основная версия, вам не нужно помнить, чтобы изменитьNN
вручную при установке обновления.JRE
если вы хотите запустить 1.7 или 1.8 JRE из командной строки, его можно найти в
/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java
. Это фиксированный путь, и вы можете установить только один "публичный" JRE в любой момент времени.$ /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java -version java version "1.7.0_13" Java(TM) SE Runtime Environment (build 1.7.0_13-b20) Java HotSpot(TM) 64-Bit Server VM (build 23.7-b01, mixed mode)
вы можете использовать псевдоним оболочки в вашем
.bashrc
alias java_jre='/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java'
проблема в том, что установка JRE Oracle не изменяет исполняемый файл /usr/bin/java. Если вы хотите использовать эту Java, вы должны использовать путь под / Library (нужно найти, что это у меня есть JDK установить так может быть по-другому)
согласно JRE Оракула установка документа
установка JRE из Oracle не будет обновлять символические ссылки java-версии или добавьте java в свой путь. Чтобы иметь возможность сделать это, вам необходимо установить версия JDK.
Oracle JDK действительно меняется
/usr/bin/java
чтобы указать на исполняемый файл Java 7. Если вы занимаетесь разработкой, то вы должны использовать это, поскольку оно включает в себя больше, чем JRE.Оракул установить FAQ говорит
Q: должен ли я установить JRE или JDK?
A: если вы планируете запускать приложения Java, установите среду выполнения Java Окружающая среда (JRE). JRE также называют Oracle Java. Однажды вы установили JRE, вы можете запускать Java-апплеты и приложения, дважды щелкнув файлы JAR, файлы JNLP и с помощью браузер. Обратите внимание, что 32-разрядные браузеры, такие как Firefox в 32-битном режиме, и Chrome, не поддерживаются JRE.
Если вы планируете писать приложения Java, установите разработку Java Комплект (JDK).
во-первых, вы вышли из консоли и снова открыли ее, чтобы она имела шансы принять изменения в переменной PATH ?
Если вы уже сделали это, то проверьте, какая версия Java по умолчанию:
dwilches@ ~$ cd /System/Library/Frameworks/JavaVM.framework/Versions/ dwilches@ Versions$ ls -l lrwxr-xr-x 1 root wheel 59 Mar 19 10:07 CurrentJDK -> /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents lrwxr-xr-x 1 root wheel 10 Mar 19 10:07 1.6.0 -> CurrentJDK lrwxr-xr-x 1 root wheel 10 Mar 19 10:07 1.6 -> CurrentJDK lrwxr-xr-x 1 root wheel 10 Mar 19 10:07 1.5.0 -> CurrentJDK lrwxr-xr-x 1 root wheel 10 Mar 19 10:07 1.5 -> CurrentJDK lrwxr-xr-x 1 root wheel 10 Mar 19 10:07 1.4.2 -> CurrentJDK lrwxr-xr-x 1 root wheel 10 Mar 19 10:07 1.4 -> CurrentJDK lrwxr-xr-x 1 root wheel 1 Mar 19 10:08 Current -> A drwxr-xr-x 8 root wheel 272 Mar 25 10:03 A
Теперь вы можете видеть, что" текущая "версия-это" A " (это мой Java7). Если бы я хотел изменить его на Java 1.6, то я мог бы написать:
dwilches@ Versions$ sudo unlink Current dwilches@ Versions$ sudo ln -s 1.6 Current
и затем:
dwilches@ Versions$ java -version java version "1.6.0_43" Java(TM) SE Runtime Environment (build 1.6.0_43-b01-447-11M4203) Java HotSpot(TM) 64-Bit Server VM (build 20.14-b01-447, mixed mode)
таким образом, вы можете использовать это, чтобы сделать" текущую " точку на вашем нужное место на Java.