Версия Javac не обновляется

1

Я пытаюсь скомпилировать jar на моем mac, используя 1.8 в качестве целевой версии, но javac не работает с сообщением "Недействительный целевой выпуск".

Когда я запускаю javac -version он дает мне "javac 1.6.0_29".

У меня есть 1.8 jdk, установленный под "/Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk", но даже когда я запускаю /Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home/bin/javac -version он дает мне "javac 1.6.0_29".

Sym, связывающий папку CurrentJDK в "/System/Library/Frameworks/JavaVM.framework/Versions/" с папкой jdk в библиотеке, ничего не меняет. Символ не связал javac внутри /usr/bin с javac в моей папке jdk.

Любые идеи, как заставить javac использовать мою версию 1.8?

Большое спасибо!

ОБНОВИТЬ

Мои переменные пути выводят следующее:

echo $PATH/usr/local/bin: /usr/bin: /bin: /usr/sbin: /sbin: /usr/local/bin: /usr/local/mysql/bin: /opt/X11/bin: /USR/локальные/мерзавец/бен:/Разработчик/Инструменты/Panda3D

echo $JAVA_HOME (поскольку я установил его уже для того, чтобы заставить javac работать)/Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home/

Preprending/Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home/bin/переменной $ PATH не изменило выход для javac -version.

ОБНОВЛЕНИЕ 2

Другой вопрос: что делает джавак? Выполняет ли он свой код напрямую или в зависимости от других двоичных файлов в системе? Если так, ссылка на них может быть нарушена. В противном случае мне интересно, почему выполнение двоичного файла внутри моей папки 1.8 jdk дает мне версию 1.6.

  • 0
    Что произойдет, если вы which javac ? Как выглядит ваш PATH?
  • 0
    какой javac указывает на /usr/bin/javac , эхо $ PATH приводит к /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/mysql/bin:/opt/X11/bin:/usr/local/git/bin:/Developer/Tools/Panda3D
Показать ещё 2 комментария
Теги:
macos
javac

5 ответов

2

Правильный способ Debian/Ubuntu для настройки того, на какой javac указывается /usr/bin/javac используется команда update-alternatives. Вы можете сделать это в интерактивном режиме и выбрать из списка доступных параметров:

sudo update-alternatives --config javac

и для java:

sudo update-alternatives --config java
1

В дополнение к тому, что сказал @Zakaria, эта команда покажет вам все пакеты Java, установленные в системе, например:

$ update-java-alternatives -l

java-1.7.0-openjdk-amd64 1071 /usr/lib/jvm/java-1.7.0-openjdk-amd64
java-1.8.0-openjdk-amd64 1069 /usr/lib/jvm/java-1.8.0-openjdk-amd64

В этом обзоре используются инструменты Java и какая версия, например:

$ update-alternatives --get-selections | grep java
...
java     manual   /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
javac    auto     /usr/lib/jvm/java-7-openjdk-amd64/bin/javac
javadoc  auto     /usr/lib/jvm/java-7-openjdk-amd64/bin/javadoc
...

Как показано выше, java будет запускаться с версии 8, а javac с версии 7.

Если вы хотите обновить выбор для всех инструментов Java за один раз, попробуйте заменить имя пакета одним из ваших вариантов:

$ sudo update-java-alternatives -s java-1.8.0-openjdk-amd64

Убедитесь, что это действительно сработало. Если это не было или частично, вам приходилось прибегать к полуавтоматическому способу, например:

$ for i in $(update-alternatives --get-selections | grep java | awk '{system("basename "$3)}'); do sudo update-alternatives --config $i; done
  • 0
    Это очень удобный скрипт, потому что вызов update-java-alternatives работал только для java, javac, jar и т. Д., Он изменился на конфигурацию по умолчанию, которая была неверной версией java. Спасибо!
0

Выполните следующие шаги

  • В строке поиска Windows введите "окружающая среда".
  • В своей среде переменные (учетная запись) создайте переменную JAVA_HOME. Установите его в C:\Program Files\Java\jdk1.8.0_65 (или где бы вы ни находились JDK).

  • В переменных вашей системной среды отредактируйте PATH. Поместите это в начало значения PATH:% JAVA_HOME%\bin;

  • Нажмите OK.

  • Выйдите из любых окон команд, в которых вы находитесь.
  • Запустите командное окно. Тип javac -version. вы должны получить этот ответ: javac 1.8.0_65
0

Убедитесь, что переменные окружения JAVA_HOME и PATH указывают на папку 1.8 и не имеют ссылки на папку 1.6 java, особенно PATH.

Проверьте:

echo% PATH%

Задавать:

export PATH = "папка java8": $ PATH

или проверьте эту страницу: Установите переменные среды в Mac OS X Lion

  • 0
    Привет, Миклос, я уже явно установил JAVA_HOME на 1.8 jdk. Поэтому echo $ JAVA_HOME выводит /Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home/ . Тем не менее, версия javac-версии 1.6.0_29. Я добавил «/Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home/bin/» к моей переменной $ PATH, но результат тот же. Пожалуйста, смотрите обновление для переменных моего пути.
0

где ссылка ссылается на ссылку /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK?

Убедитесь, что это относится к надлежащему JDK

/Library/Java/JavaVirtualMachines/jdk{major}.{minor}.{macro[_update]}.jdk

  • 0
    CurrentJDK ссылается на /Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/ ..

Ещё вопросы

Сообщество Overcoder
Наверх
Меню