Как запустить java в командной строке
Перейти к содержимому

Как запустить java в командной строке

  • автор:

Компиляция и запуск приложения из командной строки

Для компиляции программ из командной строки (консоли) используется команда javac.

javac [ключи] [исходники]

Чтобы получить список возможных ключей, выполните:

javac –help

Чтобы скомпилировать программу MyFirstApp , запустите компилятор, указав имя исходного файла в командной строке следующим образом:

javac MyFirstApp.java

Компилятор javac создаст файл MyFirstApp.class , содержащий версию байт-кода.

В процессе компиляции исходного кода каждый отдельный класс помещается в собственный выходной файл, называемый по имени класса и получающий расширение .class .

2. Компиляция с помощью -d.

По умолчанию компилятор записывает сгенерированный .class в тот же каталог, где находится исходный класс .java . Это хорошо для маленьких проектов, но при работе на больших проектах файлы .java и .class должны храниться отдельно.

Ключ -d позволяет указать компилятору, куда записывать сгенерированные .class файлы.

Например, у нас есть такая структура папок:

Структура папок фото

Следующая команда, выполненная из project1 папки сгенерирует файл MyFirstApp.class и запишет его в папку classes (предполагаем, что MyFirstApp не содержит оператора package ):

cd project1 javac -d classes src/MyFirstApp.java 

Теперь давайте рассмотрим пример компиляции класса com.company.lesson1.MyFirstApp , находящегося в пакете com.company.lesson1 . Имеется такая структура каталогов:

Структура папок фото

Следующая команда, выполненная из src каталога, сгенерирует файл MyFirstApp.class , и запишет его в каталог classes/com/company/lesson1:

cd myProject/src javac -d ../classes com/company/lesson1/MyFirstApp.java

Если каталог classes/com/company/lesson1 не существует, то он будет создан при компиляции.

Если же не существует каталог classes, то вы получите ошибку компиляции.

3. Запуск программы с помощью команды java.

Чтобы выполнить программу из командной строки, следует воспользоваться загрузчиком приложений Jаvа, который называется java.

java [ключи] класс [аргументы]

Для получения списка возможных ключей, выполните:

java –help

Чтобы выполнить программу, передадим имя класса MyFirstApp (предполагаем, что MyFirstApp не содержит оператора package ) в качестве аргумента командной строки:

java MyFirstApp

Если класс MyFirstApp находится в пакете, то выполняем команду:

java com.company.lesson1.MyFirstApp

Стоит заметить, что при запуске программы указывается только один класс без расширения .class .

4. Ключевые моменты

  1. В процессе компиляции исходного кода каждый отдельный класс помещается в собственный выходной файл, называемый по имени класса и получающий расширение .class .
  2. По умолчанию компилятор записывает сгенерированный .class в тот же каталог, где находится исходный класс .java .
  3. Ключ -d указывает компилятору, куда записывать сгенерированные .class файлы.
  4. При компиляции могут быть созданы отсутствующие каталоги соответствующие пакету компилируемого класса.
  5. Если в ключе -d указан не существующий каталог, будет выброшена ошибка компиляции.
  6. При запуске программы указывается только один класс без расширения .class .
  7. -d может содержать относительные и абсолютные пути.

Презентацию с видео можно скачать на Patreon .

Как запустить java в командной строке

Давайте сделаем описанные выше шаги — скомпилируем и запустим первую программу на Java. Здесь я предлагаю не обращать внимания на то, что программа делает. Функциональность этой программы достаточно тривиальна — она печатает слова «Hello, world . ». (Сколько же было за все годы написано таких примеров — и не сосчитать). Но как я уже говорил, на первый раз мы не будем обращать внимание на то, как программа это делает. Сейчас важно научиться делать три шага:

  1. Редактирование кода
  2. Компилирование программы на Java
  3. Запуск программы под управлением JVM

Для редактирования кода можно использовать самый простой редактор — тот же «Блокнот» (Notepad).
Создайте отдельный каталог для наших примеров — предлагаю назвать его JavaLesson. В нашем случае это будет на диске C. Если у Вас будет другой диск — я думаю, что замена C на какую-то другую букву не вызовет больших проблем. Итак, в редакторе набираем следующие строки (как я уже говорил — если вы практически ничего не поймете из того, что здесь написано — не страшно). На первый раз можно просто использовать Copy/Paste.

ВНИМАНИЕ . Посмотрите на рисунок, где показано как сохранять файл в Блокноте — там по умолчанию сохраняется текстовый документ. Если вы выберете такой формат, то у вас будет файл First.java.txt.
Вам надо обязательно выбрать пункт «Тип файла: Все файлы». Тогда при сохранении будет правильное расширение

Как запустить программу java через командную строку

Java программы выполняются (или интерпретируются) другой программой, называемой JVM (Java Virtual Machine). Она не интерпретирует напрямую исходный Java код, вместо этого java код должен быть скомпилирован в .class файлы (или байт-код), формат которых не является удобным для чтения человеком, но это и не машинный код.

Рассмотрим на примере, напишем небольшую программу:

public class Main  public static void main(String[] args)  System.out.println("Hello, World!"); > > 

Дальше заходим в папку куда сохранился проект. Находим там наш файл Main.java. Для того, чтобы скомпилировать его нужно набрать в консоли команду javac и в качестве параметра передать имя нашего файла:

Эта команда вызовет компилятор, который создаст файл Main.class, содержащий скомпилированный код нашей java программы.

Чтобы запустить ее, нужно ввести команду java с именем класса (не файла!) в качестве параметра:

Как запустить java в командной строке

Есть файл nm.java в папке nm В файле нет строки package. Компилируется командой javac nm.java и запускается командой java nm Файл класса при этом появляется в папке nm рядом с другими файлами. Добавляю в файл строку package nm;. компилирую командой javac nm.java Пытаюсь запустить через java nm и получаю: Error: Could not find or load main class nm. Caused by: java.lang.NoClassDefFoundError: nm (wrong name: nm/nm) Почему, чёрт его дери?

27 ноября 2022
Кстати , CHCP 1251 тоже иногда помогает справиться с «иероглифами» вместо кириллицы 🙂
14 октября 2022

Статья помогла понять самые основы, что происходит при сборке программы (и почему у меня постоянно ломалось). Но! Мне как новичку пришлось гуглить ещё 100500 статей как с JavaRush так и с других сайтов, чтобы выполнить инструкции по компиляции и сборке через Maven (Ant и Gradle не пробовала). Основные замечания: 1) Здесь опечатка в команде java -classpath ./bin BoxMachine. Правильно указать, что выполняется пакет : java -classpath ./bin src.BoxMachine 2) Не хватает краткого прямого указания, в каком редакторе можно составлять и редактировать файлы (тот же NotePad, я вообще делала в терминальном редакторе nano) — вроде бы и понятно, но все-таки. Для полноты текста и возможно у автора будет для новичков полезный совет. 3) В каком редакторе можно посмотреть байт-код? Для образовательных целей. Раз залезаем под капот и разбираем по кирпичикам, то почему бы и нет? Jetbrains декомпилирует обратно и это уже не так интересно 4) ! Для выполнения инструкций в этой статье (чтобы по чесноку, без IDE) Ant, Maven, Gradle должны устанавливаться и настраиваться отдельно. Не хватает хотя бы прямого указания на этот факт и ссылки на статью с инструкцией установки 5) pom.xml, который предлагает статья — неполный. Вот совсем. Мне пришлось добавлять properties и то проект скомпилировался, но правильно в jar не собрался.

5 сентября 2022

Доброго времени суток, комрады! Возник вопрос выполнение программы происходит через следующую команду: «java hello.java», Когда пишу «java hello», получаю сообщение «Error: Could not find or load main class hello» «Caused by: java.lang.ClassNotFoundException: hello»

3 сентября 2022

Почему-то IDE IntelliJ при выполнении пишет java -javaagent . «. App» типа того что-то и всё у него выходит хорошо в IDE, а вот вручную когда в командной строке наберёшь %JAVA_HOME%java «. App» не выполняет, пишет не может main класс выполнить. Может кто ни будь объяснить?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *