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

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

  • автор:

Running JAR-Packaged Software

Now that you have learned how to create JAR files, how do you actually run the code you packaged? Consider these scenarios:

  • Your JAR file contains an applet that is to be run inside a browser.
  • Your JAR file contains an application that is to be started from the command line.
  • Your JAR file contains code that you want to use as an extension.

This section will cover the first two situations. A separate trail in the tutorial on the extension mechanism covers the use of JAR files as extensions.

Applets Packaged in JAR Files

To start any applet from an HTML file for running inside a browser, you use the applet tag. For more information, see the Java Applets lesson. If the applet is bundled as a JAR file, the only thing you need to do differently is to use the archive parameter to specify the relative path to the JAR file.

As an example, use the TicTacToe demo applet. The applet tag in the HTML file that displays the applet can be marked up like this:

If the TicTacToe demo was packaged in a JAR file named TicTacToe.jar, you can modify the applet tag with the addition of an archive parameter:

The archive parameter specifies the relative path to the JAR file that contains TicTacToe.class. For this example it is assumed that the JAR file and the HTML file are in the same directory. If they are not, you must include the JAR file's relative path in the archive parameter's value. For example, if the JAR file was one directory below the HTML file in a directory called applets, the applet tag would look like this:

JAR Files as Applications

You can run JAR packaged applications with the Java launcher (java command). The basic command is:

The -jar flag tells the launcher that the application is packaged in the JAR file format. You can only specify one JAR file, which must contain all of the application-specific code.

Before you execute this command, make sure that the runtime environment has information about which class within the JAR file is the application's entry point.

To indicate which class is the application's entry point, you must add a Main-Class header to the JAR file's manifest. The header takes the form:

The header's value, classname, is the name of the class that is the application's entry point.

For more information, see the Setting an Application’s Entry Point section.

When the Main-Class is set in the manifest file, you can run the application from the command line:

Пакетирование и распространение настольных приложений Java

Многие начинающие программисты сталкиваются с таким вопросом: «Я создал свое приложение в среде IDE, как теперь заставить его работать из командной строки вне среды IDE?». Может возникнуть и такой вопрос: «Как мне распространить это приложение среди других пользователей, не передавая им заодно всю среду IDE?».

Ответы на эти вопросы относительно просты, но не всегда очевидны. В данном документе даны ответы на них путем демонстрации основ использования среды IDE для подготовки приложений к распространению и развертыванию. Кроме того, в данном документе предоставлены сведения, которые могут быть необходимы для настройки системы программиста (или которые нужно будет передать пользователям приложения). Мы покажем несколько различных подходов к развертыванию приложения, позволяющих пользователям получать доступ к нему посредством:

Двойного щелчка файла архива Java (JAR) приложения.

Вызова приложения из командной строки.

Вызова приложения из файла сценария.

Использования Java Web Start.

netbeans stamp

Для работы с этим учебным курсом требуются программное обеспечение и материалы, перечисленные в таблице ниже.

Создание исполняемого файла JAR

В данной части учебного курса показано, как можно создать предназначенное для распространения приложение в среде IDE и затем запустить это приложение вне среды IDE. Мы пакетируем это приложение в исполняемый файл JAR.

Файл JAR – это файл архива, в который могут быть вложены файлы и папки. Файлы JAR подобны файлам ZIP, но файлы JAR могут иметь дополнительные атрибуты, полезные при распространении приложений Java. В число этих атрибутов входят цифровая подпись файлов JAR, дополнительное сжатие, совместимость с различными платформами и т. д.

В этом упражнении мы создаем проект среды IDE и затем помещаем в этот проект два заранее написанных файла исходного кода Java. Затем мы скомпилируем классы и создадим исполняемый файл JAR. После этого мы посмотрим, как запускать файлы JAR вне среды IDE.

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

Создание проекта с помощью существующих файлов исходного кода

Загрузите файл DeploymentTutorial.zip и извлеките его содержимое. Данный архив ZIP содержит файлы исходного кода для приложения, а также несколько других файлов, которые будут использованы в этом руководстве.

В IDE NetBeans выберите ‘Файл’ > ‘Создать проект’.

На странице Choose Category («Выбор категории») выберите Java Project With Existing Sources («Проект Java с существующим исходным кодом») в категории Java и нажмите кнопку Next («Далее»).

На странице Name and Location («Имя и местоположение») мастера введите AnotherGrep в поле имени проекта и укажите местоположение проекта. Нажмите кнопку «Далее».

Местоположение папки проекта не обязательно должно совпадать с местоположением исходных файлов, импортируемых в проект.

На странице мастера Existing Sources («Существующие исходные файлы») укажите файлы исходного кода, которые будут включены в проект. Нажмите кнопку Add Folder («Добавить папку») справа от поля Source Package Folders («Папки пакетов исходного кода»). Перейдите к папке DeploymentTutorial , которую только что разархивировали, разверните папку, выберите папку src и нажмите кнопку Open («Открыть»). Папка src будет добавлена к полю Source Package Folders («Папки пакетов исходного кода»).

Нажмите кнопку «Завершить».

Примечание. Если, например, необходимо исключить определенные исходные файлы из операции импорта в проект, щелкните ‘Далее’, чтобы открыть последнее окно ‘Включает & Исключает’. В этом случае необходимо использовать все исходные файлы в папке src поэтому нажимается кнопка ‘Готово’, чтобы завершить работу в мастере создания проектов.

Проект откроется в среде IDE и отобразится в окне «Проекты». Изучить содержание проекта можно, развернув его узел пакетов исходного кода, в котором можно будет увидеть классы Grep и xGrep . Grep.java – файл консольной версии приложения. xGrep.java – файл версии приложения с графическим интерфейсом, использующей методы, определенные в Grep.java .

Настройка проекта

Для настройки проекта необходимо выполнить несколько действий:

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

Назначьте главный класс проекта. Это позволит гарантировать, что файл JAR, создаваемый при построении проекта, будет исполняемым.

Проверка платформы Java

Наш проект должен быть скомпилирован и выполнен на платформе Java 7 или Java 8. Поэтому нам необходимо убедиться, что платформа Java 7 или Java 8 соответственно используется в качестве платформы для данного проекта.

Правой кнопкой мыши щелкните узел проекта и выберите элемент «Свойства».

На вкладке «Библиотеки» в качестве платформы Java должна быть указана версия JDK 1.7 (или JDK 1.8).

На вкладке Sources («Источники») выберите JDK 7 (или JDK 8) как формат двоичных файлов/файлов исходного кода.

Нажмите кнопку «OК», чтобы закрыть окно Project («Свойства»).

Назначение главного класса

Чтобы пользователь мог без труда запустить создаваемый файл JAR (дважды щелкнув его или введя java -jar AnotherGrep.jar в командной строке), необходимо указать главный класс внутри файла манифеста manifest в архиве JAR. (Файл манифеста является стандартной частью архива JAR, содержащей информацию о файле JAR, которая будет полезна для средства запуска java при запуске приложения.) Главный класс служит точкой входа, из которой средство запуска java запускает приложение.

При сборке проекта среда IDE создает файл JAR и включает в него манифест. При назначении главного класса проекта мы убеждаемся, что главный класс указан в манифесте.

Для назначения главного класса проекта выполните следующие действия:

Правой кнопкой мыши щелкните узел проекта и выберите элемент «Свойства».

Выберите категорию Выполнение и введите anothergrep.xGrep в поле ‘Основной класс’.

Нажмите кнопку «ОК» для закрытия диалогового окна «Свойства проекта».

При сборке проекта ниже в этом руководстве будет создан манифест, включающий в себя следующую запись:

Построение проекта и создание файла JAR

Теперь, когда файлы исходного кода готовы и параметры проекта настроены, пора выполнить сборку проекта.

Выберите «Выполнение» > «Собрать проект» (AnotherGrep). В качестве альтернативы щелкните правой кнопкой мыши узел проекта в окне ‘Проекты’ и выберите ‘Сборка’.

При сборке проекта происходит следующее.

К папке проекта (далее именуемой «папка PROJECT_HOME«) добавляются папки build и dist .

Все исходные файлы компилируются в файлы .class , которые помещаются в папку PROJECT_HOME/build .

В папке PROJECT_HOME/dist создается архив JAR, содержащий проект.

Если для проекта указаны какие-либо библиотеки (кроме JDK), в папке dist создается папка lib . Библиотеки копируются в папку dist/lib .

Файл манифеста manifest в архиве JAR обновляется за счет включения записей, указывающих главный класс и все библиотеки, которые находятся в пути классов проекта.

Примечание. Содержимое Manifest можно просмотреть в окне ‘Файлы’ IDE. После построения проекта переключитесь на окно Files («Файлы») и перейдите к dist/AnotherGrep.jar . Разверните узел файла JAR, разверните папку META-INF и дважды щелкните MANIFEST.MF , чтобы отобразить Manifest в редакторе исходного кода.

(Дополнительные сведения о файлах манифеста приведены в этом разделе в учебном курсе по Java).

Запуск и распространение файла JAR

Запуск приложения в среде IDE

При разработке приложений в среде IDE их обычно следует протестировать и обновить перед распространением. Для тестирования приложения, над которым вы работаете, нужно просто запустить его из среды IDE.

Для запуска проекта AnotherGrep в IDE, щелкните правой кнопкой мыши узел проекта в окне ‘Проекты’ и выберите ‘Выполнить’.

Должно открыться окно xGrep. Можно нажать кнопку Browse («Обзор») для выбора файла, в котором следует выполнить поиск текстового шаблона. В поле Search Pattern («Шаблон поиска») введите шаблон в виде текста или регулярного выражения, совпадения с которым следует искать, и нажмите кнопку Search («Поиск»). Все совпадения появятся в области Output («Выходные данные») окна xGrep.

Сведения о регулярных выражениях, которые можно использовать в приложении, доступны здесь и во многих других местах.

Запуск приложения вне среды IDE

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

Запустить приложение вне среды IDE можно выполнив следующие действия:

В диспетчере файлов системы (например, в окне «Мой компьютер» на системах Windows XР) перейдите к PROJECT_HOME/dist и дважды щелкните файл AnotherGrep.jar .

Если окно xGrep открылось, приложение запущено успешно.

Если окно xGrep не открывается, то, скорее всего, отсутствует сопоставление между файлами JAR и средой выполнения Java. См. Устранение проблем с сопоставлениями файлов JAR ниже.

Распространение приложения другим пользователям

Теперь, когда подтверждено, что приложение работает вне среды IDE, можно перейти к его распространению.

Отправьте файл JAR приложения всем, кто будет использовать приложение. Пользователи приложения смогут запускать его, дважды щелкнув файл JAR. Если у них это не получится, покажите им информацию в разделе Устранение проблем с сопоставлениями файлов JAR, приведенную.

Примечание. Если работа приложения зависит от дополнительных библиотек, помимо включенных в JDK, необходимо включить их в распространение (не относится к этому примеру). Относительные пути к этим библиотекам добавляются в запись classpath файла манифеста JAR при разработке приложения в среде IDE. Если эти дополнительные библиотеки не будут найдены по указанному пути класса (т.е. относительному пути) при запуске, приложение не запустится. Создайте архив ZIP, содержащий файл JAR и библиотеку, после чего отправьте этот файл ZIP пользователям. Проинструктируйте пользователей распаковать этот архив ZIP так, чтобы файл JAR и файлы JAR библиотек были в одной папке. Запустите файл JAR приложения.

Запуск приложения Java

Цель этого упражнения состоит в демонстрации некоторых из способов запуска приложения из командной строки.

В данном упражнении показано, как можно запустить приложение Java следующими двумя способами:

Выполнение команды java из командной строки.

Использование сценария для вызова класса в файле JAR.

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

Приложение можно запустить из командной строки, используя команду java . Если нужно выполнить исполняемый файл JAR, используйте параметр -jar команды.

Например, для запуска приложения AnotherGrep надо выполнить следующие действия:

Открыть окно терминала. На системах Microsoft Windows это делается путем нажатия кнопки «Пуск» и выбора «Выполнить…​», ввода cmd в поле «Открыть:» и нажатия кнопки «OК».

Перейдите в каталог PROJECT_HOME/dist (используя команду cd ).

Введите следующую строку для запуска главного класса приложения:

Если эти инструкции выполнены, а приложение не запускается, вероятно, следует выполнить одно из следующих действий:

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

Добавить двоичные файлы Java к переменной среды PATH, чтобы отпала необходимость указывать путь к двоичному файлу java из командной строки. См. Установка переменной среды PATH

Запуск приложений из сценария

Если приложение, которое необходимо распространить, является консольным приложением, может оказаться, что его удобнее запускать из сценария, особенно если для запуска приложения требуются длинные и сложные аргументы. В этом разделе мы используем консольную версию Grep, в которой необходимо передать аргументы (шаблон поиска и список файлов) файлу JAR, вызываемому в нашем сценарии. Для сокращения объема, вводимого в командную строку, мы используем простой сценарий, подходящий для запуска тестового приложения.

В первую очередь необходимо изменить главный класс в приложении на консольную версию класса и построить файл JAR заново:

В окне ‘Проекты’ в IDE щелкните правой кнопкой мыши узел проекта ( AnotherGrep ) и выберите ‘Свойства’.

Выберите узел Run («Запуск») и измените свойство Main Class («Главный класс») на anothergrep.Grep (с anothergrep.xGrep ). Нажмите кнопку «ОК», чтобы закрыть окно Project Properties («Свойства проекта»).

Снова щелкните правой кнопкой мыши узел проекта и выберите Clean and Build Project («Очистка и сборка проекта»).

По завершении этих действий файл JAR будет собран заново, а атрибут Main-Class в манифесте файла JAR будет указывать на anothergrep.Grep .

Сценарий bash – для компьютеров под управлением UNIX и Linux

В папке, куда было извлечено содержимое файла DeploymentTutorial.zip, можно найти сценарий bash с именем grep.sh . Давайте посмотрим на него:

Первая строка указывает, какой интерпретатор команд следует использовать для интерпретации этого сценария. Вторая исполняет файл JAR, созданный средой IDE в папке PROJECT_HOME/dist . $@ просто копирует все переданные сценарию аргументы, заключая каждый в кавычки.

Данный сценарий подразумевает, что двоичные файлы Java являются частью переменной среды PATH. Если данный сценарий не работает на вашем компьютере, см. Установка переменной среды PATH.

Дополнительные сведения о написании сценариев для интерпретатора bash можно найти здесь.

Сценарий .bat для компьютеров Windows

На компьютерах Microsoft Windows пакетным файлам можно одновременно передавать не более девяти аргументов. При наличии более девяти аргументов файл JAR будет необходимо исполнить несколько раз.

Сценарий для этого может выглядеть следующим образом:

Данный сценарий можно найти под названием grep.bat в папке, куда было извлечено содержимое архива DeploymentTutorial.zip, если необходимо увидеть его в действии.

Девять аргументов представлены внутри пакетного файла как %<ARG_NUMBER> , где <ARG_NUMBER> должен иметь значение в пределах <0-9> . %0 зарезервировано для имени сценария.

Можно увидеть, что за раз (в одном цикле) программе передаются только девять аргументов. Оператор for просто смещает аргументы на девять, чтобы подготовить их к следующему циклу. Цикл завершается по обнаружении пустого аргумента файла оператором if (это указывает на отсутствие новых файлов для обработки).

Дополнительные сведения о пакетных сценариях можно найти на этой странице.

Пакетирование приложения для Java Web Start

Java Web Start представляет собой технологию, используемую для запуска приложений Java из веб-браузера одним щелчком мыши. Подробные сведения об упаковке приложений для развертывания с помощью Java Web Start см. в разделе Включение Java Web Start в IDE NetBeans. Здесь мы приводим только краткое описание действий, необходимых, чтобы сделать приложение развертываемым с помощью Java Web Start.

Щелкните правой кнопкой мыши узел проекта в окне Projects («Проекты») и выберите Properties («Свойства»).

На вкладке Web Start окна Project Properties («Свойства проекта») установите флажок Enable Web Start («Активировать Web Start»).

Выберите Local Execution («Локальное исполнение») из раскрывающегося списка Codebase («Кодовая база»), поскольку мы будем тестировать только локальное исполнение.

Нажмите кнопку ‘Настроить’, чтобы подписать приложение, указав сведения в диалоговом окне ‘Подписание’.

Примечание. Начиная с обновления Java SE 7 Update 21, выпущенного в апреле 2013 г., рекомендуется использование подписанных доверенных сертификатов для всех Java-аплетов и приложений Web Start Для получения дополнительной информации см. Апплеты Java и Web Start — подпись кода.

Сохраните все прочие параметры по умолчанию и нажмите кнопку «OК».

Щелкните правой кнопкой мыши узел проекта и выберите Clean and Build Project («Очистка и сборка проекта»). Данная команда среды IDE удалит все ранее скомпилированные файлы и результаты сборок, скомпилирует приложение заново и соберет проект с новыми параметрами.

Вне среды IDE откройте папку PROJECT_HOME/dist , после чего откройте файл launch.html в своем браузере. Появится тестовая страница HTML с кнопкой Launch («Запуск»).

Нажмите кнопку Launch, чтобы открыть приложение. Можно будет увидеть, что Java загружена и приложение запускается.

Примечание. Некоторые браузеры сначала перенаправляют пользователей на страницу загрузок Java.

Советы по устранению проблем

Указание сопоставлений файлов JAR

На большинстве компьютеров исполняемый файл JAR можно исполнить, просто дважды щелкнув его. Если при двойном щелчке файла JAR ничего не происходит, это может быть вызвано одной из двух следующих причин:

Тип файлов JAR не сопоставлен со средой выполнения Java (JRE) на этом компьютере.

Если тип файлов JAR сопоставлен с JRE, значок, представляющий этот файл, должен включать логотип Java.

Тип файлов JAR сопоставлен JRE, но параметр -jar не входит в команду, передаваемую JRE при двойном щелчке значка.

Примечание. Иногда связи файлов JAR переключаются установленным ПО, например, программным обеспечением для обработки файлов в формате zip.

Способ, которым тип файлов JAR можно привязать к средству запуска java , зависит от операционной системы.

Примечание. Убедитесь, что на вашем компьютере установлена одна из версий JRE. Следует использовать версию 1.4.2 или более поздние. Приложения Java нельзя запускать на компьютерах, где не установлена платформа Java. (В случае установки комплекта для разработчика на языке Java (JDK) с ним устанавливается и JRE. Однако если программа распространяется не только среди программистов, у пользователей может не быть JRE или JDK.)

На Windows XP установленную версию Java можно проверить выбрав «Пуск» > «Панель управления» > («Установка и удаление программ») (там должна быть указана, например, Java™ 7 Update 51).

В Windows Vista или 7 установленную версию Java можно проверить, выбрав «Пуск > Панель управления > Программы и компоненты» (там должно отображаться название версии, например Java™ 7 Update 51).

Если на компьютере отсутствует платформа Java, JRE можно загрузить с сайта загрузок Java SE.

Если же она уже имеется на компьютере, но сопоставление файлов не работает, выполните действия для добавления связи файла JAR в Microsoft Windows:

Выберите «Пуск» > «Панель управления».

(Применимо только к Windows Vista). Щелкните ‘Панель управления’ > ‘Программы’.

В Windows XP дважды щелкните ‘Свойства папки’ и выберите вкладку ‘Типы файлов’. Для Windows Vista или 7 щелкните ‘Программы по умолчанию’ и выберите ‘Связать тип файла или протокол с программой’.

В списке «Зарегистрированные типы файлов» выберите файл JAR.

(В Windows XP в разделе «Сведения» диалогового окна щелкните «Изменить программу»).

В диалоговом окне «Выбор программы» выберите Java Platform SE Binary.

Нажмите кнопку «OК» для выхода из диалогового окна «Выбор программы».

Нажмите кнопку ‘Закрыть’, чтобы закрыть диалоговое окно ‘Свойства папки’ (в Windows XP) или диалогового окна связывания типа файла или протокола с конкретными программами (в Windows 7).

Примечание. Если файлы JAR files связаны с Java Platform SE Binary в системе, но двойной щелчок все равно не запускает файл JAR, может потребовать указание параметра -jar в связи файлов.

Чтобы указать параметр -jar в сопоставлении файла на Microsoft Windows XP, выполните следующие действия.

Выберите «Пуск» > «Панель управления».

В Windows XP дважды щелкните ‘Свойства папки’ и выберите вкладку ‘Типы файлов’.

В списке «Зарегистрированные типы файлов» выберите файл JAR.

В разделе «Сведения» диалогового окна щелкните «Дополнительно».

В диалоговом окне «Изменение свойств типа файлов» щелкните «Изменить…​».

В текстовом поле «Приложение, исполняющее действие» добавьте следующую строку в конце пути к JRE:

После этого поле должно содержать текст, подобный следующему:

Нажмите кнопку «OК» для выхода из диалогового окна «Изменение действия для типа».

Нажмите кнопку «OК» для выхода из диалогового окна «Изменение свойств типа файлов».

Нажмите кнопку «Закрыть» для выхода из диалогового окна «Свойства папки».

Примечание. Начиная с Windows Vista расширенные связи файлов можно настроить с помощью RegEdit. Дополнительные сведения см. в статье Что произошло с диалоговым окном типов файлов?.

Для систем UNIX и Linux процедура изменения сопоставлений файлов зависит от того, какая рабочая среда (вроде GNOME или KDE) используется. Загляните в параметры своей рабочей среды или ознакомьтесь с документацией по рабочей среде.

Установка переменной среды PATH

Если на компьютере невозможно запустить класс Java или файл JAR без указания на местоположение JDK или JRE, возможно, следует изменить значение переменной среды PATH системы.

При работе в системе Microsoft Windows процедура установки переменной PATH зависит от используемой версии Windows.

Ниже приведены этапы установки переменной PATH на системе Windows XP:

Выберите «Пуск» > «Панель управления» и дважды щелкните «Система».

В диалоговом окне «Свойства системы» выберите вкладку «Дополнительно».

Щелкните вкладку «Переменные среды».

В списке переменных среды пользователя выберите PATH и нажмите кнопку «Изменить».

Добавьте местоположение JRE к концу списка путей. Местоположения в списке разделены точками с запятой (;). Например, если JRE установлен в каталог C:\Program Files\Java\jdk1.6.0_51 , в конец переменной PATH необходимо добавить следующее:

Нажмите кнопку «OК» для выхода из диалогового окна «Переменные среды», затем нажмите кнопку «ОК» для выхода из диалогового окна «Свойства системы».

При работе в операционной системе UNIX или Linux способ изменения переменной среды PATH зависит от используемой программы интерпретатора команд. Ознакомьтесь с документацией по интерпретатору команд для получения дополнительных сведений.

Что дальше?

Дополнительные сведения о работе с IDE NetBeans см. на странице Поддержка и документация веб-сайта NetBeans.

Дополнительные сведения о разработке приложений Java в среде IDE, включая управление путем к классам, доступны в документе Разработка базовых приложений Java.

Сведения о функциях сборки в IDE NetBeans см. в разделе Сборка проектов Java документа Разработка приложений в IDE NetBeans.

Работа с Java в командной строке

Сейчас уже никто не создает программы в консоли. Используя любимую IDE, разработчик чувствует себя неуютно за чужим компьютером, где её нет.
Решив разобраться в работе Ant и Maven, я поймал себя на том, что не смогу собрать приложение без них в консоли.
В данной статье я постарался уместить все этапы проектирования демонстрационного приложения, чтобы не искать справку по каждой команде на просторах Интернета.

От простого к .

Каждая программа обычно содержится в отдельном каталоге. Я придерживаюсь правила создавать в этом каталоге по крайней мере две папки: 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
Adder.java

Ошибка возникла из-за того, что для компиляции нужны файлы с исходными кодами классов, которые используются (класс Calculator). Надо указать компилятору каталог с файлами с помощью ключа -sourcepath.
Компилируем

Если удивляет результат

Есть возможность запустить отладчик. Для этого существует jdb.
Сначала компилируем с ключом -g, чтобы у отладчика была информация.

Отладчик запускает свой внутренний терминал для ввода команд. Справку по последним можно вывести с помощью команды help.
Указываем точку прерывания на 9 строке в классе Calculator

Запускаем на выполнение.

Чтобы соориентироваться можно вывести кусок исходного кода, где в данный момент находится курссор.

Узнаем, что из себя представляет переменная а.

Выполним код в текущей строке и увидим, что sum стала равняться 2.

Поднимемся из класса Adder в вызвавший его класс Calculator.

Удаляем точку прерывания

Можно избежать захода в методы, используя команду next.

Проверяем значение выражения и завершаем выполнение.

Хорошо бы протестировать

Запускаем. В качестве разделителя нескольких путей в classpath в Windows используется ‘;’, в Linux — ‘:’. В консоли Cygwin не работают оба разделителя. Возможно, должен работать ‘;’, но он воспринимается как разделитель команд.

Создадим библиотеку

Класс Calculator оказался полезным и может быть использован во многих проектах. Перенесем всё, что касается класса Calculator в отдельный проект.

Измените также назавания пакетов в исходных текстах. В HelloWorld.java нужно будет добавить строку

Делаем архив jar

С помощью ключа -C мы запустили программу в каталоге bin.

Надо узнать, что у библиотеки внутри

Можно распаковать архив zip-распаковщиком и посмотреть, какие классы есть в библиотеке.
Информацию о любом классе можно получить с помощью дизассемблера javap.

Из результата видно, что класс содержит кроме пустого конструктора, ещё один метод sum, внутри которого в цикле вызывается метод add класса Adder. По завершении метода sum, вызывается Adder.getSum().
Без ключа -c программа выдаст только список переменных и методов (если использовать -private, то всех).

Лучше снабдить библиотеку документацией

Изменим для этого класс калькулятора.

Документацию можно создать следующей командой. При ошибке программа выдаст список возможных опций.

В результате получиться следующее
image

Можно подписать 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 Вам больше нравится?».

Name already in use

Java Development Kit (JDK) — комплект инструментальных средств для разработки приложений на языке Java. Включает компилятор javac, утилиты, библиотеки классов Java API, документацию и примеры, среду исполнения приложений — Java Runtime Environment (JRE).

JRE включает виртуальную машину Java Virtual Machine (VM) и откомпилированные библиотеки классов Java API. Позволяет запускать Java приложения на любых устройствах или операционных системах.

Существует три редакции JDK:

  • SE (Standard Edition) — стандартная редакция JDK, которая используется для разработки консольных и настольных приложений.
  • EE (Enterprise Edition) — редакция для разработки распределенных приложений масштаба предприятий.
  • ME (Micro Edition) — редакция для разработки приложений мобильных устройств и встраиваемых систем.

Интегрированная среда разработки

Integrated Development Environment (IDE) — комплекс программных средств, используемый программистами для разработки программного обеспечения (ПО), в том числе, текстовый редактор, средства автоматизации сборки, отладчик.

Существует несколько популярных IDE для разработки Java приложений:

Для выполнение заданий необходимо установить следующие инструментальные средства:

    или OpenJDK (версию 8 или выше).

Main-класс — класс, в котором есть main-метод. Main-метод запускает поток исполнения приложения, вызывается вирутальной машиной Java VM:

Вывод текста в командную строку осуществляется через встроенный поток вывода:

Создание, сборка и запуск проекта

Создать новый проект

Запустить «IntelliJ IDEA». Если открыт приветственный экран «Welcome to IntelliJ IDEA», нажать кнопку «New Project». Если открыто основное окно, выбрать пункт меню «File | New | Project».

Снимок экрана: создание нового проекта

Выбрать пункт «New Project» из списка слева. Задать имя нового проекта «Name» и изменить его месторасположение «Location», если необходимо. В списке «Languages» должен быть выбран язык «Java». В списке «JDK» должна быть выбрана JDK версии 8 или выше.

Создать пакет и класс

В окне «Project» щелкнуть правой кнопкой мыши папку «src», выбрать пункт «New | Java Class» (Alt+Insert).

Снимок экрана: создание нового класса

Задать полное имя класса следующим образом: «ru.isu.math.example.MyMainClass» и нажать кнопку «OK». В результате будет создан пакет «ru.isu.math.example» и класс «MyMainClass» внутри этого пакета.

Добавить в созданный класс main-метод с необходимыми инструкциями.

Собрать и запустить приложение

Выбрать пункт меню «Run | Run…» или нажать кнопку «Run» на панели инструментов сверху — «зеленый треугольник» (Alt+Shift+F10). В раскрывшемся списке выбрать «MyMainClass».

Запустится компиляция исходного кода программы в байт-код и затем исполнение приложения в Java VM. Результат выполнения программы, сообщение «Hello World!», будет выводиться во встроенной командной строке.

Снимок экрана: проект (слева) и редактируемый класс (справа)

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

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

запустить компилятор javac, указав в качестве параметра название файла с исходным кодом с расширением:

В результате компилятор создаст файл с байт-кодом с тем же именем класса, но расширением «class» — «MyMainClass.class» в папке «target/ru/isu/math/example».

Для того чтобы исполнить откомпилированный класс необходимо перейти в директорию, в которой находится файл с байт-кодом:

и запустить Java VM, указав в качестве параметра название файла с байт-кодом без расширения:

Когда переменная среды JAVA_HOME не настроена, следует указывать полный путь к компилятору javac и виртуальной машине java соответственно:

Для того чтобы дизассемблировать откомпилированный класс необходимо перейти в директорию, в которой находится файл с байт-кодом:

запустить дизассемблер javap, указав в качестве параметра название файла с байт-кодом:

Когда переменная среды JAVA_HOME не настроена, следует указывать полный путь к дизассемблеру javap:

Результат дизассемблирования байт-кода выводится в командную строку.

Снимок экрана: результат дизассемблирования байт-кода

Инструкции и блоки кода

Инструкция кода — команда для выполнения в Java VM. Инструкция заканчивается точкой с запятой ; .

Блок кода — набор инструкций, заключенный в пару симметричных фигурных скобок.

Локальная переменная — это переменная, объявленная внутри блока кода. Область видимости такой переменной ограничена блоком кода, в котором она объявлена.

При объявлении переменной необходимо указать ее тип данных. Например, если переменная имеет тип int , то в качестве своих значений она может принимать только целые числа:

Переменная, объявленная с типом double , содержит только вещественные числа:

Переменная с типом String, будет ссылаться на строки

Цикл — управляющая инструкция, которая определяет выполнение сопряженного блока кода (тела цикла) множество раз.

Цикл for имеет следующий синтаксис:

Например, следующий цикл выполняет инструкции тела десять раз:

Аргументы командной строки

Аргументы командной строки передаются приложению в виде единственного параметра main-метода — массива строк:

При запуске приложения из командной строки аргументы указываются после имени main-класса:

Для того чтобы задать аргументы командной строки в IDE, необходимо создать новую конфигурацию запуска следующим образом: выбрать пункт меню «Run | Edit Configurations…», добавить новую конфигурацию, выбрав в списке слева пункт «Application», задать имя при необходимости, указать main-класс, ввести значения аргументов в поле «Program Arguments», нажать кнопку «OK».

Снимок экрана: создание конфигурации запуска приложения

Затем запустить программу с помощью созданной конфигурации, выбрав ее по имени в выпадающем списке слева от кнопки запуска «Run».

Снимок экрана: результат запуска приложения

Евклидово расстояние между заданными точками

Для двух точек двухмерного пространства

евклидово расстояние вычисляется следующим:

Для реализации этой формулы в Java можно использовать класс Math (является частью Java API) который обеспечивает основные метаматематические операции над числами, например:

Вышеприведенная формула может быть реализована следующим образом:

Другой способ реализации вычисления евклидова расстояния в Java состоит в том, чтобы воспользоваться готовым методом, поставляемом в составе сторонней библиотеки, например Apache Commons Math.

Создание и сборка проекта Maven

Создать новый проект

Если открыт приветственный экран «Welcome to IntelliJ IDEA», нажать кнопку «New Project». Если открыто основное окно, выбрать пункт меню «File | New | Project».

В качестве системы сборки «Build system» выбрать «Maven». Изменить имя проекта «Name» и месторасположение его файлов «Location» при необходимости, а также «GroupId» и «ArtifactId» в скрытой панели «Advanced Settings».

Снимок экрана: создание Maven проекта

Добавить класс и собрать проект

Добавить пакет и класс с исходным кодом в папку «src/main/java». Раскрыть панель «Maven» справа, затем дважды щелкнуть пункт «install» в списке «Lifecycle». Запустится процесс сборки проекта. На панели «Run» внизу можно увидеть сообщение об успешном выполнении сборки «[INFO] BUILD SUCCESS». На панели «Project» (слева) можно увидеть результаты сборки — JAR файлы, раскрыв папку target.

Снимок экрана: сборка Maven проекта

Добавить зависимость и импортировать класс

Открыть файл pom.xml, выбрав его на панели структуры проекта «Project». Добавить пару тегов <dependencies></dependencies> в конце перед закрывающимся тегом следующим образом:

Добавить координаты зависимости от библиотеки Apache Commons Math в раздел dependencies следующим образом:

Актуальные координаты зависимости можно найти на веб-сайте mvnrepository.com.

После добавления зависимости, пакеты и классы библиотеки Apache Commons Math становятся доступными для импорта в разрабатываемые классы. Например, для того чтобы использовать готовую реализацию вычисления Евклидового пространства следует импортировать класс из данной библиотеки org.apache.commons.math3.ml.distance.EuclideanDistance как показано ниже:

Собрать запускаемый JAR файл

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

Обновить Maven проект, нажав кнопку «Reload All Maven Projects», удалить предыдущую сборку — «clean» в списке «Lifecycle» и запустить новую сборку — «install» в списке «Lifecycle».

В случае ошибки сборки «Source option 5 is no longer supported. Use 6 or later» добавьте в pom.xml версию Java в секции «properties», например, для Java 8, это будет выглядеть следующим образом:

Создание и сборка проекта Gradle

Создать новый проект

Если открыт приветственный экран «Welcome to IntelliJ IDEA», нажать кнопку «New Project». Если открыто основное окно, выбрать пункт меню «File | New | Project».

В качестве системы сборки «Build system» выбрать «Gradle». Изменить имя проекта «Name» и месторасположение его файлов «Location» при необходимости, а также «GroupId» и «ArtifactId» в скрытой панели «Advanced Settings».

Добавить класс и собрать проект

Добавить пакет и класс с исходным кодом в папку src/main/java. Раскрыть панель «Gradle» справа, затем дважды щелкнуть пункт «build» в списке «Tasks | build». Запустится процесс сборки проекта. На панели «Run» внизу можно увидеть сообщение об успешном выполнении сборки «BUILD SUCCESSFUL». На панели «Project» (слева) можно увидеть результаты сборки — JAR файлы, раскрыв папку build/libs.

Снимок экрана: сборка Gradle проекта

Добавить зависимость и импортировать класс

Открыть файл build.gradle, выбрав его на панели структуры проекта «Project». Добавить строку с координатами зависимости от библиотеки Apache Commons Math:

в раздел «dependencies» следующим образом:

Актуальные координаты зависимости можно найти на веб-сайте mvnrepository.com.

После этого можно импортировать пакеты и классы из библиотеки Apache Commons Math в разрабатываемые классы.

Собрать запускаемый JAR файл

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

Обновить Gradle проект, нажав кнопку «Reload All Gradle Projects», удалить предыдущую сборку — «clean» в списке «Tasks | build» и запустить новую сборку — «build» в списке «Tasks | build».

Запуск JAR файла в командной строке

Необходимо перейти в папку с запускаемым JAR файлом.

Запустить Java VM с флагом -jar, после которого указать имя JARфайла, например:

Командная строка отобразит результаты выполнения JAR файла.

Часть I

  • Разработать Java программу: вычислить евклидово расстояние между заданными точками.
  • Создать, собрать и запустить Java проект в IDE.

Часть II

  • Скомпилировать Java программу (исходный код) в командной строке.
  • Запустить файл Java программу (байт код) в командной строке.
  • Считать параметры командной строки (некоторые точки евклидова пространства)
  • Дизассемблировать Java программу (байт код)

Часть III

  • Создать, собрать и запустить Maven проект с зависимостью «Apache Commons Math»
  • Создать, собрать и запустить Gradle проект с зависимостью «Apache Commons Math»
  1. Платформа разработки JDK
  2. Платформа исполнения JRE
  3. Интерпретация байт-кода (Just-in-Time компиляция)
  4. Main-метод и main-класс
  5. Литералы
  6. Идентификаторы
  7. Локальные переменные
  8. Блоки кода
  9. Сборка мусора
  10. Управляющие инструкции
  • Г. Шилдт. Java Руководство для начинающих. Глава 1

Footer

© 2023 GitHub, Inc.

You can’t perform that action at this time.

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.

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

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