Как запустить файл класса
Обновлено: 24.11.2024
У вас много файлов *.jar
и некоторые файлы .java в
Вот как скомпилировать приложение, для которого требуются файлы .jar из одного каталога и файлы .java из другого. Сгенерированные файлы .class помещаются в WEB-INF/classes/. Компилятор создает соответствующие пакеты/каталоги.
Класс, содержащий общедоступный метод static void main, называется Main внутри пакета mypkg . Чтобы запустить приложение, необходимо загрузить файлы .class и все эти файлы .jar.
Для компиляции, и это самая важная часть, обратите внимание на одинарные кавычки, чтобы предотвратить расширение * оболочкой. javac должен сам интерпретировать glob (). Вы *должны запретить оболочке расширять * и позволить javac позаботиться о глобусе так, как ему заблагорассудится.
Чтобы запустить приложение, обратите внимание, что мы указали путь к файлам .jar и путь к файлам .class с помощью параметра -classpath и разделили оба каталога с помощью : . В окнах это будет ; .
Следующая командная строка должна запускать приложение Java, но это неправильно и не будет работать. Предположим, среда *nix.
javac нужно знать только базовый каталог для файлов классов, а иерархию пакетов не следует указывать в командной строке. javac обрабатывает пакет автоматически. Мы используем
но это должно быть просто:
Еще одна проблема — это глобус в /path/to/classfiles/* . Это используется только для указания файлов jar. Опять же, для файлов классов javac просто нужно знать их базовый каталог. Затем он автоматически ищет пакеты и файлы с именами, оканчивающимися на .class, внутри этого базового каталога. При необходимости он рекурсивно перемещается по более глубоким каталогам.
Третья задача — это somepkg/Main , которая должна быть somepkg.Main .
Правильная команда:
Каталог strcucture на самом деле /proj/somepkg/Main.class, но при запуске пакетов Java-приложений (которые являются каталогами в файловой системе) указываются с использованием записи через точку, а не через разделитель пути. Итак, если у вас
Файл находится в C:\Users\Matt\workspace\HelloWorld2\bin Вот что я получаю, когда захожу в командную строку и набираю "Java HelloWorld2":
Я ожидал увидеть распечатанный HelloWorld. Что я делаю неправильно? У меня установлен JDK.
В дополнение к ответу Исаака на вашу проблему. Может быть хорошей идеей написать "java" в нижнем регистре, потому что верхний регистр работает только в MS Windows.
4 ответа 4
Чтобы найти скомпилированный класс, вам нужно указать путь к классам:
java -cp C:\Users\Matt\workspace\HelloWorld2\bin HelloWorld2
Он отлично работает из любой точки моей файловой структуры. Просто поместите путь к скомпилированному классу в параметр -cp, а затем имя скомпилированного класса без пути. Вы также можете запустить этот класс без параметра -cp, если вы находитесь в той же папке, что и ваш скомпилированный класс.
Для запуска файла класса Java из командной строки используется следующий синтаксис:
где packageName (обычно начинается с com или org ) — это имя папки, в которой находится ваш файл класса.
Например, если имя вашего основного класса — App, а имя пакета Java вашего приложения — com.foo.app, тогда файл вашего класса должен находиться в папке com/foo/app (отдельная папка для каждой точки), поэтому вы запустите свое приложение как:
Примечание: $ указывает на приглашение оболочки, игнорируйте его при вводе
Если для вашего класса не определено имя пакета, просто запустите его как: java App .
Если у вас есть какие-либо другие зависимости jar, убедитесь, что вы указали параметр classpath либо с помощью -cp / -classpath, либо с помощью переменной CLASSPATH, которая указывает на папку с вашим jar/war/ear/zip/class. Таким образом, в Linux вы можете добавить к команде префикс: CLASSPATH=/path/to/jars , в Windows вам нужно добавить папку в системную переменную. Если не задано, путь класса пользователя состоит из текущего каталога ( . ).
Практический пример
Учитывая, что мы создали пример проекта с использованием Maven как:
и мы скомпилировали наш проект с помощью mvn compile в нашем каталоге my-app/, он сгенерирует наш файл класса в target/classes/com/foo/app/App.class .
Чтобы запустить его, мы можем либо указать путь к классу через -cp, либо перейти к нему напрямую, см. примеры ниже:
Чтобы дважды проверить имя класса и пакета, вы можете использовать инструмент дизассемблера файлов классов Java, например:
В этом руководстве мы увидим, как написать, скомпилировать и запустить программу Java. Я также расскажу о синтаксисе Java, соглашениях по коду и нескольких способах запуска программы Java.
Простая программа на Java:
Вывод: это моя первая программа на Java
Как скомпилировать и запустить указанную выше программу
Необходимое условие: в вашей системе должен быть установлен Java. Вы можете получить Java отсюда.
Шаг 1. Откройте текстовый редактор, например Блокнот в Windows или TextEdit на Mac. Скопируйте приведенную выше программу и вставьте ее в текстовый редактор.
Вы также можете использовать IDE, такую как Eclipse, для запуска Java-программы, но мы рассмотрим эту часть позже в следующих руководствах. Для простоты в этом руководстве я буду использовать только текстовый редактор и командную строку (или терминал)
Шаг 2. Сохраните файл как FirstJavaProgram.java. Вам может быть интересно, почему мы назвали файл как FirstJavaProgram, дело в том, что мы всегда должны называть файл так же, как имя общедоступного класса. В нашей программе имя общедоступного класса — FirstJavaProgram , поэтому имя нашего файла должно быть FirstJavaProgram.java.
Шаг 3. На этом этапе мы скомпилируем программу. Для этого откройте командную строку (cmd) в Windows, если у вас Mac OS, откройте терминал.
Чтобы скомпилировать программу, введите следующую команду и нажмите Enter.
Вы можете получить эту ошибку при попытке скомпилировать программу: «javac не распознается как внутренняя или внешняя команда, исполняемая программа или пакетный файл». Эта ошибка возникает, если в вашей системе не задан путь к Java
Если вы получили эту ошибку, вам сначала нужно установить путь перед компиляцией.
Установите путь в Windows:
Откройте командную строку (cmd), перейдите в место, где вы установили java в своей системе, и найдите каталог bin, скопируйте полный путь и напишите его в команде следующим образом.
Примечание. Ваша версия jdk может отличаться. Поскольку в моей системе установлена версия Java 1.8.0_121, я упомянул об этом при настройке пути.
Установите путь в Mac OS X
Откройте терминал, введите следующую команду и нажмите клавишу возврата.
Введите следующую команду в терминале, чтобы подтвердить путь.
Описанные выше шаги предназначены для временной настройки пути. Это означает, что когда вы закроете командную строку или терминал, настройки пути будут потеряны, и вам придется снова установить путь при следующем использовании. Я поделюсь руководством по настройке постоянного пути в следующем руководстве.
Шаг 4. После компиляции файл .java преобразуется в файл .class (байтовый код). Теперь мы можем запустить программу. Чтобы запустить программу, введите следующую команду и нажмите Enter:
Обратите внимание, что во время работы программы к имени файла не следует добавлять расширение .java.
Пристальный взгляд на первую программу на Java
Теперь, когда мы поняли, как запускать программу Java, давайте более подробно рассмотрим программу, которую мы написали выше.
Это первая строка нашей Java-программы. Каждое Java-приложение должно иметь по крайней мере одно определение класса, состоящее из ключевого слова класса, за которым следует имя класса. Когда я говорю ключевое слово, это означает, что его не следует менять, мы должны использовать его как есть. Однако имя класса может быть любым.
Я сделал класс общедоступным с помощью модификатора открытого доступа, я расскажу о модификаторе доступа в отдельном посте, все, что вам нужно знать сейчас, что java-файл может иметь любое количество классов, но он может иметь только один открытый класс и имя файла должно совпадать с именем общедоступного класса.
Это наша следующая строка в программе, давайте разберем ее, чтобы понять:
public : это делает основной метод общедоступным, что означает, что мы можем вызывать метод вне класса.
static : нам не нужно создавать объект для запуска статических методов. Они могут работать сами по себе.
void : ничего не возвращает.
main : это имя метода. Это метод точки входа, из которого JVM может запустить вашу программу.
(String[] args): используется для аргументов командной строки, которые передаются в виде строк. Мы расскажем об этом в отдельной публикации.
Этот метод выводит содержимое, заключенное в двойные кавычки, в консоль и вставляет после него новую строку.
Ознакомьтесь с этими основными Java-программами, прежде чем читать следующую тему:
Для кода Java, который вы написали до сих пор (из любого предварительного требования Java, такого как JHU 601.107 или 500.112), все файлы просто находятся в одном каталоге, и вы компилируете и запускаете свой код из этого же каталога. Итак, самая простая форма запуска Java из командной строки выглядит следующим образом:
Если вы перейдете в каталог hello/, вы можете скомпилировать Hello.java с помощью команды javac следующим образом:
javac — это компилятор Java, -Xlint:all — это просто флаг, который указывает компилятору сообщать о предупреждениях и т. д., а Hello.java — это файл, который мы хотим скомпилировать. Теперь каталог должен выглядеть так:
Hello.class — это скомпилированный байт-код Java. Если вы взяли 601.220 и знаете, как компилировать код C/C++ из командной строки, результатом этой компиляции будет фактически исполняемый файл. Важно отметить, что файлы .class не исполняются таким же образом. GCC компилирует код C в байт-код, который фактически выполняется на машине. Файлы .class не запускаются на вашей реальной машине, они фактически запускаются внутри «Виртуальной машины Java» (или JVM), которая работает поверх любой вашей машины.Эта часть не важна, но может быть полезна для понимания того, как работа с Java из командной строки работает в более сложных случаях.
Теперь, чтобы запустить то, что мы только что скомпилировали, просто используйте команду java (которая порождает одну из этих JVM) и запустите любой класс, который вы ей зададите:
Ура, мы запускаем Java из командной строки.
Если ваша программа использует аргументы командной строки, они передаются как java Hello args[0] args[1] .
JAR-файлы
Одна вещь, с которой мы столкнемся в этом семестре, — это так называемые «jar» файлы, которые заканчиваются на .jar . Файл jar — это, по сути, файл, который объединяет несколько файлов Java, которые пользователь может включить в свою собственную программу. Некоторые из этих jar-файлов также можно запускать, как если бы они были основной программой. Вот как мы будем использовать контрольный стиль в этом году. Есть способ загрузить checkstyle для запуска checkstyle из командной строки, но поскольку именно так автогрейдер будет запускать checkstyle, стоит показать это в демонстрационных целях.
Выполнение контрольного стиля
Во-первых, вам нужно скачать jar-файл checkstyle со страницы их релизов (автооценщик использует checkstyle-8.16-all.jar) и сохранить его локально. Допустим, мы хотим запустить checkstyle для этого файла Hello.java. Нам также нужно иметь рядом файл конфигурации (cs226_checks.xml). Конфигурационный файл — это просто xml-файл, в котором указано, на какие правила стиля checkstyle следует обращать внимание.
Скажем, у нас есть вот такая настройка (где res/ означает «ресурсы»).
Чтобы запустить jar checkstyle как исполняемый файл (обратите внимание, что нам не нужно ничего компилировать), мы можем использовать флаг -jar.
Флаг -jar указывает на то, что JAR следует рассматривать как исполняемый файл, а флаг -c указывает, что мы указываем файл конфигурации (предоставляемый нами XML-файл). Если вы хотите проверить несколько файлов, вы можете перечислить их после Hello.java или просто использовать *.java для сопоставления всех файлов Java.
Путь к классам
Вы, вероятно, знакомы с термином "библиотека" в том, что касается программирования. Например, когда вы импортируете java.util.Scanner в свой код, вы фактически сообщаете Java, что ваша программа зависит от некоторого другого кода в этой библиотеке. Когда вы устанавливаете Java, она поставляется с этим набором вещей, которые вы можете импортировать. По умолчанию при компиляции Java будет искать эти другие файлы везде, где установлена Java. Теперь предположим, что вы хотите использовать/запустить некоторый код, который не является частью установки Java по умолчанию. Для этого нам нужно использовать аргумент -classpath.
В этом примере мы обсудим JUnit — мы не будем рассматривать JUnit до нескольких недель до начала семестра, но это хорошее введение в то, что такое путь к классам Java.
Запуск JUnit
JUnit снова представляет собой библиотеку, которую можно загрузить в виде файла jar. Мы используем junit-4.12.jar. Сам JUnit на самом деле зависит от другого файла jar, hamcrest-core-1.3.jar. Допустим, у вас есть файл с именем MyUnitTest.java, и этот код импортирует что-то вроде org.junit.Test. Если вы попробуете старый добрый $javac MyUnitTest.java, компилятор пожалуется, что не знает, что такое org.junit.Test. Потому что этот код находится в junit-4.12.jar, и мы не указали компилятору, где его искать. Для этого мы добавляем аргумент -classpath (в качестве альтернативы -cp или --class-path ).
Скажем, у нас есть такая установка (где lib/ означает «библиотека», а src/ — исходный код).
Чтобы скомпилировать это из каталога src/, мы можем сделать следующее:
Аргумент classpath, который является ../lib/junit-4.12.jar:. сообщает Java, где искать файлы. Это список, разделенный двоеточиями. Первые две вещи в списке ( ../lib/junit-4.12.jar и ../lib/hamcrest-core-1.3.jar ) — это место, где находятся наши jar-файлы с другими классами, от которых мы зависим. Последнее в списке ( . ) обозначает текущий каталог. Без . мы бы пропустили MyUnitTest.java и MyProgram.java. Мы могли бы соединить столько из них, сколько захотим. На самом деле мы можем объединить путь к классам, чтобы он был просто ../lib/*:. поскольку наши зависимости находятся в одном файле (это обычное дело).
Напомним, что вы можете (и часто должны) использовать аргумент -classpath / -cp / --class-path, чтобы указать java и javac, где могут существовать все потенциальные классы, используемые вашей программой. Не забудьте указать :. в конце, чтобы также включить файлы в текущем каталоге.
Пакеты
В этом семестре мы познакомим вас с пакетами Java. В реальном мире и в любой значимой Java-программе пакеты — это способ организации кода в естественные группы.
Каждая программа Java принадлежит пакету. Без указания пакета в файле Java он принадлежит так называемому «пакету по умолчанию», который представляет собой папку с вложенным файлом. Вот почему написанные вами файлы Java могут автоматически находить друг друга (без оператора импорта), если они находятся в одном каталоге. Потому что, если они находятся в одном каталоге, они принадлежат одному и тому же пакету по умолчанию.
Допустим, теперь у вас есть немного больше кода, чем простая программа Hello.java. Для этого примера предположим, что мы создаем программу Java, которая собирает и сообщает статистику бейсбола. У вас могут быть такие файлы:
Это решаемо, но представьте, что мы добавляем все больше и больше классов, может быть сложно поддерживать все в порядке. Естественно, мы могли бы добавить RunReport, Reporter, GameReporter и SeasonReporter в их собственную папку с именем report или, говоря языком Java, в их собственный пакет (и все остальные файлы в stats/package). Результирующий каталог будет выглядеть так:
Необходимо отметить несколько вещей на уровне исходного кода: 1. Каждому классу в каталоге report/ нужен отчет о пакете; утверждение. 2. Каждому классу в каталоге model/ потребуется модель пакета; утверждение. 3. Поскольку они больше не находятся в одном пакете, если какой-либо класс в пакете отчетов использует что-то из другого пакета (например, Game ), для этого потребуется импортировать model.Game; заявление (и наоборот, если что-то в пакете модели теперь использует что-то в пакете отчета). 4. Пакеты могут быть вложены сколь угодно глубоко, а файл . в исходном коде есть селектор. Итак, если у вас есть несколько вложенных каталогов, у вас может быть пакет mypackage1.mypackage2.mypackage3; оператор, который может содержать import otherpackage.blah.SomeClass; заявление.
Теперь перейдем к запуску из командной строки.
Во-первых, давайте скомпилируем его, как мы привыкли (используя *.java для включения всех файлов в каталог). _Обратите внимание, что мы запускаем это из каталога src/, который является «корнем» нашего исходного кода. Если мы побежим
на самом деле мы компилируем все файлы. Но теперь наш каталог будет выглядеть примерно так (если его развернуть):
Это не самый привлекательный внешний вид, и его трудно читать с большим количеством файлов. Прежде чем беспокоиться об этом, было бы неплохо отделить все файлы классов от нашего исходного кода. Итак, давайте очистим эти файлы классов и перекомпилируем, используя флаг -d. Этот флаг позволяет указать каталог для вывода файлов классов.
Вместо этого давайте создадим каталог class/ на том же уровне, что и каталог src/, и запустим следующее:
Теперь у нас будет следующая установка:
С этим немного проще работать. Итак, теперь давайте приступим к запуску кода. Допустим, RunReport — это класс с основным методом, который мы можем запустить. Помните из раздела «Путь к классам», как нам приходилось указывать Java, где искать файлы классов? Мы можем просто использовать это, чтобы сообщить Java о нашем каталоге классов/. Обратите внимание, что это запускается из каталога baseball_stats/.
Опять же, . является селектором при выборе из пакета. Если вы вернетесь к примеру, где мы запускаем JUnit, JUnitCore на самом деле является классом, который находится внутри пакета с именем runner, который находится внутри пакета с именем junit, который находится внутри пакета с именем org.
Теперь мы можем запускать код из командной строки с хорошей настройкой пакета!
226 Настройка домашнего задания
Для заданий в этом классе мы предоставим вам базовый/начальный код для всего, что вам нужно написать. Пока вы не изменяете область видимости/сигнатуру каких-либо методов/классов, ваш код будет компилироваться и работать с автообработкой. Если у вас возникли проблемы с компиляцией кода в Gradescope, ознакомьтесь с примечаниями к отправке Gradescope, которые мы опубликовали. Все, что вам нужно сделать, будет отмечено // TODO в коде (многие редакторы также выделяют это).
Как правило, установка, которую мы вам предоставим, представляет собой очень простую структуру пакетов, состоящую всего из одного или двух пакетов. Это может выглядеть примерно так:
Обратите внимание, что куда бы вы ни «распаковывали» это, корень вашего исходного кода будет на один уровень выше папки hw1/, поэтому вы, скорее всего, будете запускать команды из папки, в которую вы распаковываете. Первый уровень пакета — это тот же уровень, что и каталог hw1/. Таким образом, каждый файл в этой папке будет иметь пакет hw1; утверждение. Допустим, вы извлекаете это в папку заданий внутри вашей папки cs226, где вы храните все для класса, и у вас есть какая-то другая папка (например, папка res/) со всеми ресурсами для класса. Итак, учитывая следующую настройку, вот руководство по компиляции и запуску всего.
Пример
Предположим, вы следуете стратегии из этих заметок и используете дополнительные классы/папку. Если нет, вы можете игнорировать классы/ часть аргумента пути к классам и вместо этого запускать с уровня заданий/.
Настройка:
Компиляция:
Обратите внимание, что это запускается из каталога tasks/.
Обратите внимание, что файлы, которые вам нужно изменить для любого заданного задания, будут находиться в одном пакете. Любые файлы в другом пакете предоставляются без изменений, поэтому вам нужно скомпилировать другие пакеты только один раз. После начальной компиляции вы можете выполнить всю дальнейшую компиляцию с помощью
Если вам нужна «чистая» сборка, вам просто нужно удалить папку class/.
Запуск SomeMainProgram
Его можно запустить из любого места, если аргумент пути к классам задан правильно.
Запуск SomeDataStructureTest
Выполнение контрольного стиля
Как правило, файлы модульных тестов не обязательно должны соответствовать стилю проверки. Таким образом, вам нужно запустить checkstyle только для файлов, не являющихся модульными тестами. Вы можете запустить команду для каждого файла отдельно или использовать сопоставление в этом примере, чтобы исключить все файлы, в имени которых есть слово «Тест».
Автоматизация
Есть несколько вариантов автоматизации процесса сборки, с которыми вы можете поиграть и решить, что вам больше нравится для вашей собственной разработки.
Скрипты Bash
Если вы не использовали скрипты bash, это просто способ написать некоторые команды в форме скрипта, которые можно выполнить. Вы можете добавить любые команды в скрипт bash. Итак, скажем, вы хотите сохранить эту команду компиляции. Вы можете создать новый файл compile.sh и добавить следующее:
Первая строка называется шебанг, если вам интересно, вы можете прочитать об этом здесь.
Теперь запуск ~/somepath/hw01$ sh compile.sh выполнит компиляцию. Кроме того, если вы запустите $ chmod u+x compile.sh, он пометит compile.sh как исполняемый файл. Теперь вы можете запустить ./compile.sh и добиться того же результата.
Скажем, вы хотите сделать то же самое для SomeMainProgram . Если вы хотите, чтобы сценарий принимал аргументы и вызывал SomeMainProgram с этими аргументами, вы можете добавить «$@» для всех аргументов или что-то вроде $1, $2 и т. д. для определенного аргумента. Вы также можете вызывать другие сценарии оболочки. Это может быть полезно, если вы хотите убедиться, что компилируете перед каждым запуском.
Итак, run_main.sh может выглядеть так:
Макет-файлы
Если вы использовали 601.220 или немного программировали на C, вы, вероятно, сталкивались с make-файлами. На самом деле они не являются эксклюзивными для C/C++. Если вы называете файл makefile , вы все равно можете указать цели и зависимые элементы. Это может работать не так гладко, как настройка C, но все же может помочь в вашей разработке. Помните, что табуляции, а не пробелы важны для Makefile. Они также могут вызывать другие сценарии или напрямую включать команду.
Теперь простые классы make будут выполнять всю компиляцию, а make test будет запускать ваши модульные тесты.
Псевдонимы
Последний инструмент, который вы можете использовать, — псевдоним. Это способ сказать вашему терминалу, чтобы он запоминал команду повсеместно. Итак, ранее мы имели дело с относительными путями (это означает, что мы указываем путь к чему-то вроде jar-файла на основе нашего текущего рабочего каталога). Любой написанный вами псевдоним, вероятно, должен работать независимо от того, где вы его запускаете.
Допустим, вы хотите использовать псевдоним junitr, чтобы когда вы набираете $ junitr в терминале, он интерпретировал его как команду для запуска JUnit. Одно предостережение заключается в том, что при этом мы будем указывать весь аргумент пути к классам, поэтому, чтобы передать класс, который запускает тесты, вам нужно будет запустить эту команду везде, где находится корень ваших файлов .class. Если следовать приведенным здесь примерам, вам придется запускать его из папки class/. Но вам придется открыть файл ~/.bash_aliases (или просто ~/.bashrc или ~/.bash_profile (Mac)) и добавить следующую строку:
заменив абсолютный путь фактическим полным путем к папке, содержащей ваши файлы JAR.
Затем, после повторной загрузки оболочки (или запуска команды bash), вы сможете ввести в оболочку junitr hw1.SomeDataStructureTest (где бы ни находились ваши файлы классов), и она запустит JUnit!
Вы можете создать аналогичный псевдоним для компиляции файлов junit перед запуском (не помешает включить сюда hamcrest, но это не обязательно):
и аналогично для вашей команды checkstyle. Обратите внимание, что в зависимости от вашей среды Unix вашей оболочкой по умолчанию может быть что-то отличное от bash, поэтому могут быть похожие файлы профиля, такие как .cshrc, в которых можно сохранить ваши псевдонимы.
Если у вас более простая структура пакета, скажем, только папка hw1, содержащая ваш исходный код MyClass.java (объявленный в пакете hw1) и соответствующий тестовый файл JUnit MyClassTest.java (также объявленный в пакете hw1 и импортируя hw1.MyClass). Затем, после перехода к родительской папке (той, которая содержит hw1), выполните следующие команды, заменив фактический полный путь к папке, содержащей файлы jar, на абсолютный путь (или используйте свои псевдонимы):
Скомпилировать скрипт
Скажем, у вас есть более продвинутая настройка пакета с большим количеством подпакетов, которые сами имеют подпакеты, и так далее и тому подобное. Одна хитрость в компиляции заключается в том, что нет «рекурсивной» опции для компиляции подпапок папки. С большим количеством пакетов добиться этого сложнее. Это пример сценария compile.sh, который будет работать для любой установки пакета (при условии, что он находится в каталоге для компиляции).
Преимущество этой настройки в том, что вы можете создать следующую настройку для всех своих заданий по мере того, как мы будем выпускать для вас новые задания:
Ни одно из заданий не зависит друг от друга, но некоторые зависят от некоторого кода, который мы дали вам в предыдущих заданиях.Мы снова предоставим вам этот код, но вы также можете просто скопировать новые файлы домашнего задания в существующую установку, если хотите.
Используйте IntelliJ IDEA для запуска приложения Hello World.
Теперь вы написали свой класс HelloWorld.java, вам нужно скомпилировать и запустить его. IntelliJ IDEA может сделать это за вас. Существует множество способов запуска приложения, но для начала вы можете щелкнуть зеленые стрелки слева от метода. Они известны как значки желоба.
Вы заметите две зеленые стрелки. Верхний примыкает к классу, и он будет управлять классом. Наш класс содержит только основной метод Java, так что это все, что он будет выполнять. Однако, если вы работаете с классами с несколькими тестами, например, с помощью этой зеленой стрелки выполнения будут запущены все тесты в классе.
Вторая зеленая стрелка находится рядом с основным методом Java. Нажав на нее, вы запустите основной метод Java. Для целей нашего приложения обе зеленые стрелки делают одно и то же. Когда вы нажмете зеленую стрелку, вы получите различные параметры, включая отладку, но мы пока просто запустим его, поэтому выберите этот вариант.
IntelliJ IDEA теперь скомпилирует файл в файл класса, а затем запустит его. Результат выполнения отображается в окне инструмента "Выполнить" в нижней части экрана.
Окно запуска
Давайте рассмотрим окно запуска более подробно.
В первой строке показана команда, которая использовалась для запуска программы. Обычно нам не нужно беспокоиться о том, что это было, но это полезно знать, если вы хотите точно увидеть, что было запущено и как. Например, если вы прокрутите вправо, вы увидите com.example.helloworld.HelloWorld. Это говорит вам, что это был ваш класс HelloWorld, который был запущен. Вы также можете увидеть, какой именно JDK использовался, что может быть полезно, если на одном компьютере установлено несколько версий Java.
Вторая строка в этом окне — это результат работы вашей программы — оператор «Hello World», который вы приказали ей напечатать.
Последняя строка, в которой говорится, что процесс завершен с кодом выхода 0, показывает, что программа была запущена без ошибок.
Что создала IntelliJ IDEA
Давайте кратко рассмотрим, что произошло, когда вы запустили приложение. IntelliJ IDEA скомпилировала ваш файл HelloWorld.java в файл класса. По умолчанию среда IDE создала папку с именем out. Рабочий код, то есть код, который не является тестовым кодом, помещается в производственную папку внутри выходной папки. IntelliJ IDEA создает папку для нашего проекта HelloWorld, а затем структуру каталогов для нашего пакета. Скомпилированный файл класса HelloWorld.class можно найти в конце этой иерархии каталогов.
Запуск конфигураций и ярлыков
IntelliJ IDEA также создала конфигурацию запуска для приложения, которое мы запускали. При желании вы можете запускать или отлаживать любые конфигурации запуска из панели навигации. Позже в этом руководстве мы более подробно рассмотрим конфигурации запуска.
Если вы хотите вернуться к окну «Выполнить», вы можете использовать Cmd+4 в macOS или Alt+4 в Windows, чтобы открыть его, и тот же самый ярлык еще раз, чтобы закрыть его и вернуть фокус обратно в редактор.< /p>
Читайте также: