Неверная версия терминала 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 53

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.

Как и сказал Ян, но, вероятно, вы хотите, чтобы java7 вызывался из сценария .sh, поэтому вам нужна функция вместо добавленного псевдонима .файл:

java7() {
    /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java "$@"
}
export -f java7