Как создать и запустить первое Java-приложение. Практические Задания
Практические задания к уроку о создании первого Java-приложения. Вы создадите классы в разных пакетах, скомпилируете их с помощью javac, запустите программу из командной строки, передадите ей аргументы через main(), соберёте JAR-файл и подключите его при компиляции и запуске через флаг -cp. К каждому заданию есть решение на Patreon.
Создание и запуск классов Car, Engine и Driver
- Создайте три класса:
Carв пакетеcom.company.vehicles,Engineв пакетеcom.company.detailsиDriverв пакетеcom.company.professions. Все три класса находятся в разных пакетах. - В методе
main()классаCarсоздайте объекты классовEngineиDriver. При запускеCarпрограмма должна выводить на консоль "I'm driving!". Скомпилируйте и запустите программу из командной строки. - Используйте аргументы командной строки при запуске
Car: на вход программы подаётся несколько аргументов. Программа должна распечатать их в следующем виде:Value: знач1 Value: знач2
На чём чаще всего спотыкаются
Класс из пакета запускается по полному имени из каталога, где лежит корень пакетов: java com.company.vehicles.Car. Если зайти внутрь каталога vehicles и выполнить java Car, JVM ответит Error: Could not find or load main class.
Сборка JAR-файла и подключение через флаг -cp
- Перенесите пакет
com.company.professionsв отдельный проект. - Проверьте, что в классе
Carосталось создание объектов:Engine engine = new Engine();иDriver driver = new Driver();Мы пока не знаем, как устроено создание объектов, — это будет рассмотрено в дальнейших уроках. Здесь важно другое: классCarссылается на классDriver, который теперь живёт в другом проекте. - Соберите пакет
com.company.professionsв JAR-файл и скопируйте его в каталогlib. - При компиляции и запуске класса
Carуказывайте JAR-файл во флаге-cp(classpath).
Нюанс
Разделитель элементов classpath зависит от ОС: на Windows — точка с запятой (-cp ".;lib/professions.jar"), на Linux и macOS — двоеточие (-cp ".:lib/professions.jar"). Не забывайте точку: без неё JVM перестанет видеть ваши собственные классы в текущем каталоге.
Проверь свой код
При написании программ обращайте внимание на рекомендации по оформлению кода.
Часто задаваемые вопросы
Как скомпилировать и запустить Java-программу из командной строки?
Компиляция: javac -d out src/com/company/vehicles/Car.java — флаг -d задаёт каталог, куда сложатся .class-файлы с сохранением структуры пакетов. Запуск: java -cp out com.company.vehicles.Car — имя класса указывается полное, вместе с пакетом, и без расширения .class.
Как передать аргументы командной строки в Java-программу?
Перечислите их через пробел после имени класса: java com.company.vehicles.Car red 90. Они попадут в параметр String[] args метода main(): args[0] — первый аргумент, args.length — их количество. Все аргументы приходят строками; число нужно преобразовывать, например через Integer.parseInt(args[1]).
Как создать JAR-файл из командной строки?
Утилитой jar из состава JDK: jar cf lib/professions.jar -C out com/company/professions. Флаг c создаёт архив, f задаёт имя файла, а -C out велит брать классы из каталога out, не включая сам out в пути внутри архива. Проверить содержимое можно командой jar tf lib/professions.jar.
Что такое флаг -cp и зачем он нужен?
-cp (сокращение от classpath) сообщает компилятору и JVM, где искать классы: каталоги и JAR-файлы. Пример: javac -cp lib/professions.jar ... и java -cp ".;lib/professions.jar" com.company.vehicles.Car (на Windows разделитель — точка с запятой, на Linux/macOS — двоеточие). Если -cp не указан, JVM ищет классы только в текущем каталоге.
Комментарии