Компиляция и запуск приложения из командной строки
В этой статье мы научимся с вами компилировать и запускать приложения из командной строки. Конечно же, чаще всего приложения разрабатываются и запускаются из специальных средств разработки, например из Intellij IDEA, работу с которой мы рассмотрим в Создание проекта в IntelliJ IDEA. Но для того, чтобы более ясно понимать, как происходит запуск приложения, мы рассмотрим как это делать из командной строки.
1. Синтаксис компиляции и запуска из командной строки
Перед тем как запустить Java приложение, нам нужно его откомпилировать. Для компиляции программ из командной строки (консоли) используется команда javac.
Синтаксис javac:
javac [ключи] [исходники] Например, чтобы скомпилировать программу MyFirstApp, которую мы рассмотрели в прошлом уроке Создание первого приложения, запустите компилятор, указав имя исходного файла в командной строке следующим образом:
javac MyFirstApp.java В этом примере ключи отсутствуют - сначала давайте попробуем откомпилировать без ключей, а потом рассмотрим какие они бывают.
В процессе компиляции исходного кода, каждый отдельный класс помещается в собственный выходной файл, называемый по имени класса и получающий расширение class.
После того как файл откомпилировался, мы сможем его запустить. Запускается наша программа с помощью команды java.
Синтаксис java:
java [ключи] класс [аргументы] Например:
java MyFirstApp После запуска программы, на консоль выведется:
"Hello world!!!" 2. Компиляция и запуск программы, состоящей из нескольких файлов
Давайте рассмотрим пример программы, которая состоит из нескольких файлов:
public class MyFirstApp {
public static void main(String[] args) {
Helper.print();
}
}
public class Helper {
public static void print() {
System.out.print("Hello world!!!");
}
} При компиляции файла MyFirstApp.java, компилятор обнаружит файл Helper, и откомпилирует и его. После чего мы как и в прошлом примере запускаем программу с помощью следующей команды:
java MyFirstApp Стоит заметить, что при запуске программы указывается только один класс без расширения .class.
3. Компиляция с помощью -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, то вы получите ошибку компиляции.
4. Запуск программ с помощью Java лаунчер
В Java 11 была добавлена возможность компилировать и запускать программу состоящую из одного файла одной командой java.
Вместо вызова двух команд:
javac MyFirstApp.java
java MyFirstApp используем только одну:
java MyFirstApp.java Файл .class не создается, откомпилированная версия хранится в рабочей памяти и запускается из нее.
В Java 22 возможность компилировать и запускать программу одной командой java была расширена - теперь лаунчер java может запускать программы, состоящие из нескольких исходных файлов Java.
Когда может применяться такой способ запуска приложения:
- Для обучения. Если Вы только начинаете изучать Java, такой способ запуска может существенно облегчить начальный запуск программ.
-
Если не планируется создание проекта
- Для экспериментов
Презентацию с видео можно скачать на Patreon.
Курс 'Java для начинающих' на Udemy
Зарегистрируйтесь или войдите, чтобы иметь возможность оставить комментарий.