Я пытаюсь скомпилировать 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.
Правильный способ Debian/Ubuntu для настройки того, на какой javac указывается /usr/bin/javac
используется команда update-alternatives
. Вы можете сделать это в интерактивном режиме и выбрать из списка доступных параметров:
sudo update-alternatives --config javac
и для java:
sudo update-alternatives --config java
В дополнение к тому, что сказал @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
В своей среде переменные (учетная запись) создайте переменную JAVA_HOME. Установите его в C:\Program Files\Java\jdk1.8.0_65 (или где бы вы ни находились JDK).
В переменных вашей системной среды отредактируйте PATH. Поместите это в начало значения PATH:% JAVA_HOME%\bin;
Нажмите OK.
Убедитесь, что переменные окружения JAVA_HOME и PATH указывают на папку 1.8 и не имеют ссылки на папку 1.6 java, особенно PATH.
Проверьте:
echo% PATH%
Задавать:
export PATH = "папка java8": $ PATH
или проверьте эту страницу: Установите переменные среды в Mac OS X Lion
/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, но результат тот же. Пожалуйста, смотрите обновление для переменных моего пути.
где ссылка ссылается на ссылку /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK?
Убедитесь, что это относится к надлежащему JDK
/Library/Java/JavaVirtualMachines/jdk{major}.{minor}.{macro[_update]}.jdk
/Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/
..
which javac
? Как выглядит ваш PATH?/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