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

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

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

  • Двойного щелчка файла архива Java (JAR) приложения.
  • Вызова приложения из командной строки.
  • Вызова приложения из файла сценария.
  • Использования Java Web Start.

Содержание

Содержимое на этой странице применимо к IDE NetBeans 8.0

 

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

Программное обеспечение или материал Требуемая версия
IDE NetBeans версия 8.0
Комплект для разработчика на языке Java (JDK)

версия 7 или 8

Файлы исходного кода для руководства по развертыванию

 


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

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

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

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

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

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

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

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

  3. На странице Choose Category ("Выбор категории") выберите Java Project With Existing Sources ("Проект Java с существующим исходным кодом") в категории Java и нажмите кнопку Next ("Далее").
  4. На странице Name and Location ("Имя и местоположение") мастера введите AnotherGrep в поле имени проекта и укажите местоположение проекта.
    Нажмите кнопку "Далее".

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

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

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

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

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

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

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

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

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

  1. Правой кнопкой мыши щелкните узел проекта и выберите элемент "Свойства".
  2. На вкладке "Библиотеки" в качестве платформы Java должна быть указана версия JDK 1.7 (или JDK 1.8).
  3. На вкладке Sources ("Источники") выберите JDK 7 (или JDK 8) как формат двоичных файлов/файлов исходного кода.
  4. Нажмите кнопку "OК", чтобы закрыть окно Project ("Свойства").

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

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

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

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

  1. Правой кнопкой мыши щелкните узел проекта и выберите элемент "Свойства".
  2. Выберите категорию Выполнение и введите anothergrep.xGrep в поле 'Основной класс'.
  3. Нажмите кнопку "ОК" для закрытия диалогового окна "Свойства проекта".

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

Main-Class: 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 в редакторе исходного кода.

Main-Class: anothergrep.xGrep
(Дополнительные сведения о файлах манифеста приведены в этом разделе в учебном курсе по 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 надо выполнить следующие действия:

  1. Открыть окно терминала. На системах Microsoft Windows это делается путем нажатия кнопки "Пуск" и выбора "Выполнить...", ввода cmd в поле "Открыть:" и нажатия кнопки "OК".
  2. Перейдите в каталог PROJECT_HOME/dist (используя команду cd).
  3. Введите следующую строку для запуска главного класса приложения:
    java -jar AnotherGrep.jar

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

  • Включить полный путь к двоичному файлу java в третий этап данной процедуры. Например, необходимо будет ввести путь наподобие следующего, в зависимости от расположения файла JDK или JRE:
    C:\Program Files\Java\jdk1.7.0_51\bin\java -jar AnotherGrep.jar
  • Добавить двоичные файлы Java к переменной среды PATH, чтобы отпала необходимость указывать путь к двоичному файлу java из командной строки. См. Установка переменной среды PATH

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

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

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

  1. В окне 'Проекты' в IDE щелкните правой кнопкой мыши узел проекта (AnotherGrep) и выберите 'Свойства'.
  2. Выберите узел Run ("Запуск") и измените свойство Main Class ("Главный класс") на anothergrep.Grepanothergrep.xGrep). Нажмите кнопку "ОК", чтобы закрыть окно Project Properties ("Свойства проекта").
  3. Снова щелкните правой кнопкой мыши узел проекта и выберите Clean and Build Project ("Очистка и сборка проекта").

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

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

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

#!/bin/bash
                    java -jar dist/AnotherGrep.jar $@

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

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

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

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

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

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

                @echo off
                set jarpath="dist/AnotherGrep.jar"
                set pattern="%1"
                shift
                :loop
                  if "%1" == "" goto :allprocessed
                  set files=%1 %2 %3 %4 %5 %6 %7 %8 %9
                  java -jar %jarpath% %pattern% %files%
                  for %%i in (0 1 2 3 4 5 6 7 8) do shift
                goto :loop

                :allprocessed
                    

Данный сценарий можно найти под названием 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.

  1. Щелкните правой кнопкой мыши узел проекта в окне Projects ("Проекты") и выберите Properties ("Свойства").
  2. На вкладке Web Start окна Project Properties ("Свойства проекта") установите флажок Enable Web Start ("Активировать Web Start").
  3. Выберите Local Execution ("Локальное исполнение") из раскрывающегося списка Codebase ("Кодовая база"), поскольку мы будем тестировать только локальное исполнение.
  4. Нажмите кнопку 'Настроить', чтобы подписать приложение, указав сведения в диалоговом окне 'Подписание'.

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

  5. Сохраните все прочие параметры по умолчанию и нажмите кнопку "OК".
  6. Щелкните правой кнопкой мыши узел проекта и выберите Clean and Build Project ("Очистка и сборка проекта").
    Данная команда среды IDE удалит все ранее скомпилированные файлы и результаты сборок, скомпилирует приложение заново и соберет проект с новыми параметрами.
  7. Вне среды IDE откройте папку PROJECT_HOME/dist, после чего откройте файл launch.html в своем браузере.
    Появится тестовая страница HTML с кнопкой Launch ("Запуск").
  8. Нажмите кнопку 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(TM) 7 Update 51).
  • В Windows Vista или 7 установленную версию Java можно проверить, выбрав "Пуск > Панель управления > Программы и компоненты" (там должно отображаться название версии, например Java(TM) 7 Update 51).

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

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

  1. Выберите "Пуск" > "Панель управления".
  2. (Применимо только к Windows Vista). Щелкните 'Панель управления' > 'Программы'.
  3. В Windows XP дважды щелкните 'Свойства папки' и выберите вкладку 'Типы файлов'.
    Для Windows Vista или 7 щелкните 'Программы по умолчанию' и выберите 'Связать тип файла или протокол с программой'.
  4. В списке "Зарегистрированные типы файлов" выберите файл JAR.
  5. (В Windows XP в разделе "Сведения" диалогового окна щелкните "Изменить программу").
  6. В диалоговом окне "Выбор программы" выберите Java Platform SE Binary.
  7. Нажмите кнопку "OК" для выхода из диалогового окна "Выбор программы".
  8. Нажмите кнопку 'Закрыть', чтобы закрыть диалоговое окно 'Свойства папки' (в Windows XP) или диалогового окна связывания типа файла или протокола с конкретными программами (в Windows 7).

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

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

  1. Выберите "Пуск" > "Панель управления".
  2. В Windows XP дважды щелкните 'Свойства папки' и выберите вкладку 'Типы файлов'.
  3. В списке "Зарегистрированные типы файлов" выберите файл JAR.
  4. В разделе "Сведения" диалогового окна щелкните "Дополнительно".
  5. В диалоговом окне "Изменение свойств типа файлов" щелкните "Изменить...".
  6. В текстовом поле "Приложение, исполняющее действие" добавьте следующую строку в конце пути к JRE:
     -jar "%1" %*
    После этого поле должно содержать текст, подобный следующему:
    "C:\Program Files\Java\jre1.7.0_51\bin\javaw.exe" -jar "%1" %*
  7. Нажмите кнопку "OК" для выхода из диалогового окна "Изменение действия для типа".
  8. Нажмите кнопку "OК" для выхода из диалогового окна "Изменение свойств типа файлов".
  9. Нажмите кнопку "Закрыть" для выхода из диалогового окна "Свойства папки".

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

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

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

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

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

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

  1. Выберите "Пуск" > "Панель управления" и дважды щелкните "Система".
  2. В диалоговом окне "Свойства системы" выберите вкладку "Дополнительно".
  3. Щелкните вкладку "Переменные среды".
  4. В списке переменных среды пользователя выберите PATH и нажмите кнопку "Изменить".
  5. Добавьте местоположение JRE к концу списка путей. Местоположения в списке разделены точками с запятой (;).
    Например, если JRE установлен в каталог C:\Program Files\Java\jdk1.6.0_51, в конец переменной PATH необходимо добавить следующее:
    C:\Program Files\Java\jdk1.7.0_51\bin
  6. Нажмите кнопку "OК" для выхода из диалогового окна "Переменные среды", затем нажмите кнопку "ОК" для выхода из диалогового окна "Свойства системы".

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


Что дальше?

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

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

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

get support for the NetBeans

Support


By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2013, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo