Switch JDK version in Windows 10 cmd
Is there a way to change JDK version easily in cmd? like the version on mac. Change Default JDK on Mac.
3 Answers 3
Here’s my guide for Windows 10.
Step 1. Go to System Properties. Click on Environment Variables
Step 2. Add new variables, such as JAVA_8_HOME
- JAVA_8_HOME : %ProgramFiles%\Java\jdk1.8.0_152\bin
- JAVA_9_HOME : %ProgramFiles%\Java\jdk-9.0.1\bin
- JAVA_HOME : %JAVA_8_HOME%
In my case, JAVA_8_HOME (JDK8) is pointing to C:\Program Files\Java\jdk1.8.0_152\bin . You can replace this with your own path to javac . %JAVA_HOME% has a default value pointing to JAVA_8_HOME , which is the path for JDK8. That’s my preference, feel free to adjust accordingly.
Step 3. Select PATH and click on Edit . PATH
Step 4. Click on New and add %JAVA_HOME%. %JAVA_HOME% will be added to PATH automatically every time you launch a command prompt.
In order to switch JDK version in cmd, here’s the trick. Step 5. I created a batch file with
Basically, it disables echo and creates two alias. In batch file any string after :: is the comments. Every time, java8 or java9 is called, it re-exports %PATH% with the new JDK path. Save it as profile.bat . You can name it whatever you want.
Step 6. Search for regedit (Registry Editor). Click on Edit > New > String Value . Give AutoRun as the Value name and %USERPROFILE%\profile.bat as the Value data . Here, please put your actual path value to the profile.bat we just created. So, whenever a command prompt is opened, it automatically loads profile.bat , which creates those two alias in the script.
Step 7. Close any command prompt you’re using or just open a new command prompt. This is because your changes will not affect opened cmd window. Environment changes only happens to new CMD.
Step 8. Verify your results here.
If you’re using different Python versions, same trick applies, too. Find my python environment settings here.
«Javac» не работает правильно в Windows 10
проблема в том, что я обновился до Windows 10, и теперь я устанавливаю свои инструменты для программирования, и теперь, когда я установил JDK 7 Java, когда я пытаюсь использовать в cmd команду: — «javac»
результат этого: «javac» не распознается как внутренняя или внешняя команда.
но я отредактировал путь с правильной ссылкой jdk, потому что когда я использую «java», это нормально.
теперь я попробовал в консоли с этой командой: PATH=%PATH%;»C:\Program Files\Java\jdk1.7.0_79\bin»
и когда я извлекаю эту команду, когда я использую «javac», она работает, но теперь, когда я открываю другую консоль, она не работает или когда я перезапускаю консоль, эта команда не распознается.
в чем может быть проблема?
19 ответов
java является частью JRE, а не JDK.
вам нужно добавить JDK bin в системный путь, в
«Панель Управления» / System / Advanced / «Переменные Среды»
вот как я настраиваю системную переменную в Windows 10:
после добавления C:\Program файлы\Java\jdk1.8.0_73\bin для системных переменных я отключил командную строку и открыл другую. Потом сработало.
может быть, немного поздно, но у меня была такая же проблема.
Нажмите кнопку «Переместить вверх» для пути Java и переместите его сверху.
Исправлена проблема для меня
Я совершенно новичок в java и потратил часы, пытаясь решить проблемы с PATH и CLASSPATH. Был один человек, который сказал перезапустить командную строку после изменения переменных среды; это было для меня. При тестировании различных конфигураций перед тестированием обязательно перезапустите командную строку. Похоже, есть как минимум 2 разных способа настройки. Я пошел со следующим:
1) в системных переменных, добавить
JAVA_HOME = c:\program файлы (x86)\java\jdk1.8.0_121
2) в системных переменных, добавьте к существующему пути.
просто добавьте C:\Program файлы\Java\jdk1.7.0_80\bin как путь в переменных среды. нет необходимости добавлять java.exe и javac.exe в этом направлении. ЭТО РАБОТАЕТ
Я добавил ниже путь в переменной среды
;%переменной JAVA_HOME%/bin вместо %переменной JAVA_HOME%\ОГРН
в моем случае , это решить проблему
у меня была такая же проблема в Windows 10 — java -version команда работала, но javac -version не было. Я сделал три вещи:—9—>
(1) я загрузил последнюю версию jdk (не JRE) и установил его. Затем я добавил jdk/bin путь tan o переменная окружения. В моем случае это было C:\Program Files\Java\jdk-10\bin . Мне не нужно было добавлять ; для Windows 10.
(2) переместите этот путь в начало всех остальных путей.
(3) Удалите все другие пути Java, которые могут существовать.
по какой-то причине мне удалось добавить кавычки в папку path в windows 10. не C:\Program файлы\1.8.0_111\\на Java с JDK bin, но «C:\Program файлы\1.8.0_111\\Ява версии JDK бин».
наконец-то! убедитесь, что нет пробелов до и после пути и поместите двоеточие с обеих сторон без пробелов
путь для текущего пользователя, вместо этого вы можете добавить CLASSPATH и ниже ссылку поможет вам больше путь и путь к классам
Я добавил ниже путь в переменной среды
C:\Program файлы\папку Java\jdk1.8.\0_91 ОГРН
а затем скомпилировал программу, но получил ошибку, затем я перезапустил систему и снова скомпилировал программу
в этот раз это сработало 🙂
добавьте путь java к переменным среды и переместите его в начало всех доступных там путей. У меня получилось.
чтобы быть уверенным о своем пути, вы можете использовать двойные кавычки » чтобы найти путь или если вы находитесь в Windows, вы можете перейти к пути, чтобы выбрать .
в окне поиска введите «переменные среды» это должно дать вам ссылку на редактирование переменных. На странице редактирования переменных есть верхний раздел и Нижний раздел в нижнем разделе Добавить новый, введите путь C:\Program Files\Java\jdk-10\bin это отлично сработало для меня, и он все время находит компилятор.
вид избиения мертвой лошади сейчас, но я хочу прояснить одну вещь, которая может быть не совсем очевидной. Да, действительно, вам нужно отредактировать переменную среды PATH, как уже неоднократно указывалось. Ключом для меня было редактировать путь под система переменные. Я нечаянно отредактировал путь под пользователей переменные. Почему это так важно? На моей машине я должен войти в систему как администратор для редактирования переменных среды. Поэтому редактирование пользовательских переменных не помогло потому что я запускаю командную строку под своей учетной записью login (non-admin). Гррр!
кроме того, я обнаружил, что закрытие окна командной строки и его повторное открытие после обновления переменной PATH было необходимо. Изменение порядка значений, добавление точки с запятой и т. д. для меня это не имело значения.
что я сделал:- я набрал ; случайно впереди в переменной path, а затем нажмите OK, после этого, если я снова отредактирую его, он нигде не будет на той же странице, что и раньше, он открыл новую страницу, как определено для пользовательских переменных, а затем я смог удалить двойные кавычки перед переменной PATH. тогда все работает нормально. 🙂
Работа с Java в командной строке
От простого к .
Каждая программа обычно содержится в отдельном каталоге. Я придерживаюсь правила создавать в этом каталоге по крайней мере две папки: src и bin. В первой содержатся исходные коды, во второй — результат компиляции. В данных папках будет структура каталогов, зависящая от пакетов.
Один файл
Можно сделать и без лишних папок.
Берем сам файл HelloWorld.java.
Переходим в каталог, где лежит данный файл, и выполняем команды.
В данной папке появится файл HelloWorld.class. Значит программа скомпилирована. Чтобы запустить
Отделяем бинарные файлы от исходников
Теперь сделаем тоже самое, но с каталогами. Создадим каталог HelloWorld и в нем две папки src и bin.
Компилируем
Здесь мы указали, что бинарные файлы будут сохраняться в отдельную папку bin и не путаться с исходниками.
Используем пакеты
А то, вдруг, программа перестанет быть просто HelloWorld-ом. Пакетам лучше давать понятное и уникальное имя. Это позволит добавить данную программу в другой проект без конфликта имен. Прочитав некоторые статьи, можно подумать, что для имени пакета обязательно нужен домен. Это не так. Домены — это удобный способ добиться уникальности. Если своего домена нет, воспользуйтесь аккаунтом на сайте (например, ru.habrahabr.mylogin). Он будет уникальным. Учтите, что имена пакетов должны быть в нижнем регистре. И избегайте использования спецсимволов. Проблемы возникают из-за разных платформ и файловых систем.
Поместим наш класс в пакет с именем com.qwertovsky.helloworld. Для этого добавим в начало файла строчку
В каталоге src создадим дополнительные каталоги, чтобы путь к файлу выглядел так: src/com/qwertovsky/helloworld/HelloWorld.java.
Компилируем
В каталоге bin автоматически создастся структура каталогов как и в src.
Если в программе несколько файлов
HelloWorld.java
Calculator.java
Adder.java
Ошибка возникла из-за того, что для компиляции нужны файлы с исходными кодами классов, которые используются (класс Calculator). Надо указать компилятору каталог с файлами с помощью ключа -sourcepath.
Компилируем
Если удивляет результат
Есть возможность запустить отладчик. Для этого существует jdb.
Сначала компилируем с ключом -g, чтобы у отладчика была информация.
Отладчик запускает свой внутренний терминал для ввода команд. Справку по последним можно вывести с помощью команды help.
Указываем точку прерывания на 9 строке в классе Calculator
Запускаем на выполнение.
Чтобы соориентироваться можно вывести кусок исходного кода, где в данный момент находится курссор.
Узнаем, что из себя представляет переменная а.
Выполним код в текущей строке и увидим, что sum стала равняться 2.
Поднимемся из класса Adder в вызвавший его класс Calculator.
Удаляем точку прерывания
Можно избежать захода в методы, используя команду next.
Проверяем значение выражения и завершаем выполнение.
Хорошо бы протестировать
Запускаем. В качестве разделителя нескольких путей в classpath в Windows используется ‘;’, в Linux — ‘:’. В консоли Cygwin не работают оба разделителя. Возможно, должен работать ‘;’, но он воспринимается как разделитель команд.
Создадим библиотеку
Класс Calculator оказался полезным и может быть использован во многих проектах. Перенесем всё, что касается класса Calculator в отдельный проект.
Измените также назавания пакетов в исходных текстах. В HelloWorld.java нужно будет добавить строку
С помощью ключа -C мы запустили программу в каталоге bin.
Надо узнать, что у библиотеки внутри
Можно распаковать архив zip-распаковщиком и посмотреть, какие классы есть в библиотеке.
Информацию о любом классе можно получить с помощью дизассемблера javap.
Из результата видно, что класс содержит кроме пустого конструктора, ещё один метод sum, внутри которого в цикле вызывается метод add класса Adder. По завершении метода sum, вызывается Adder.getSum().
Без ключа -c программа выдаст только список переменных и методов (если использовать -private, то всех).
Лучше снабдить библиотеку документацией
Изменим для этого класс калькулятора.
Документацию можно создать следующей командой. При ошибке программа выдаст список возможных опций.
В результате получиться следующее
Можно подписать jar-архив
Если требуется подписать свою библиотеку цифровой подписью, на помощь придут keytool и jarsigner.
Генерируем подпись.
Генерируем Certificate Signing Request (CSR)
Содержимое полученного файла отправляем в центр сертификации. От центра сертификации получаем сертификат. Сохраняем его в файле (например, qwertokey.cer) и импортируем в хранилище
Файл qwertokey.cer отправляем всем, кто хочет проверить архив. Проверяется он так
Использование библиотеки
Есть программа HelloWorld, которая использует библиотечный класс Calculator. Чтобы скомпилировать и запустить программу, нужно присоединить библиотеку.
Компилируем
Собираем программу
Это можно сделать по-разному.
Первый способ
Здесь есть тонкости.
В строке
не должно быть пробелов в конце.
Вторая тонкость описана в [3]: в этой же строке должен стоять перенос на следующую строку. Это если манифест помещается в архив сторонним архиватором.
Программа jar не включит в манифест последнюю строку из манифеста, если в конце не стоит перенос строки.
Ещё момент: в манифесте не должно быть пустых строк между строками. Будет выдана ошибка «java.io.IOException: invalid manifest format».
При использовании команды echo надо следить только за пробелом в конце строки с main-class.
Второй способ
В данном способе избегаем ошибки с пробелом в main-class.
Третий способ
Включили код нужной библиотеки в исполняемый файл.
Запуск исполняемого jar-файла
Файл calculator.jar исполняемым не является. А вот helloworld.jar можно запустить.
Если архив был создан первыми двумя способами, то рядом с ним в одном каталоге должна находится папка lib с файлом calculator.jar. Такие ограничения из-за того, что в манифесте в class-path указан путь относительно исполняемого файла.
При использовании третьего способа нужные библиотеки включаются в исполняемый файл. Держать рядом нужные библиотеки не требуется. Запускается аналогично.
Как быть с приложениями JavaEE
Аналогично. Только библиотеки для компиляции нужно брать у сервера приложений, который используется. Если я использую JBoss, то для компиляции сервлета мне нужно будет выполнить примерно следующее
Структура архива JavaEE-приложения должна соответствовать определенному формату. Например
Способы запуска приложения на самом сервере с помощью командной строки для каждого сервера различны.
Надеюсь, данная статья станет для кого-нибудь шпаргалкой для работы с Java в командной строке. Данные навыки помогут понять содержание и смысл Ant-скриптов и ответить на собеседовании на более каверзные вопросы, чем «Какая IDE Вам больше нравится?».