Distribution — Упаковка javafx приложения в исполняемый .jar файл


Содержание

Как сделать runnable jar для приложения, которое использует JavaFX без собственных установщиков

У меня есть приложение, которое отлично работает, чтобы работать с java -jar blah.jar после экспорта в качестве исполняемого банку из Eclipse и предоставления ему «Пакет необходимых библиотек в сгенерированный JAR».

Я добавил код JavaFX, чтобы открыть веб-браузер. Теперь кажется, что невозможно сделать runnable jar, который работает на небольших версиях Java. Когда я экспортирую его как runnable jar, он копирует в jfxrt.jar, что характерно для моей младшей версии. Если я запустил эту банку, используя «java -jar blah.jar» для точной соответствующей java-версии (jdk1.7.0_17), тогда она отлично работает, но если я использую ее немного более новую (jdk1.7.0_45), тогда она не сможет разрешить swingx классов. Так много для «писать, когда-то бежать где угодно».

Я попытался использовать задачи JavaFX ant, но я не могу заставить задачу фактически упаковать зависимые банки. На самом деле это не включает в себя флагов fx: resources в создаваемом банке, например, волшебное затмение «требуемые библиотеки пакетов в сгенерированный JAR» отлично работает:

И, похоже, только можно создать «родные связки», которые я не хочу. Я не хочу, чтобы пользователи устанавливали rpm или deb, когда они использовали только возможность запускать банку darn.

Я не понимаю, почему Oracle должен был представить свой собственный магический дополнительный уровень сложности развертывания. Разве они не хотят, чтобы люди использовали JavaFX?

Альтернативы упаковки JavaFX

  • Следуйте инструкциям e (fx) для создания исполняемого файла jar для приложения JavaFX с использованием Eclipse.
  • Задачи Oracle java для упаковки ant и инструмент javafxpackager могут создавать исполняемые банки (описанные в документации Oracle как автономные приложения). Если вы не можете создавать такие банки с помощью инструментов, то вы, вероятно, не используете инструменты правильно.
  • Требовать минимальную версию Java 8, где jfxrt.jar(т.е. классы JavaFX) находится на пути к классу загрузки.
  • Используйте целую цепочку инструментов сторонних разработчиков, такую ​​как плагин JavaFX Maven или JavaFX Gradle.

Альтернативная (1), e (fx) упаковка клипов рекомендуется для вас, так как вы используете Eclipse.

Упаковка приложения Swing с компонентами JavaFX в исполняемый файл JAR

У меня проблемы с упаковкой приложения с компонентами Swing и JavaFX в файл JAR. Запуск его из Eclipse — это нормально. Но при выполнении Jar возникают ошибки: запускается основной метод, который вызывает конструктор моего приложения. Конструктор вызывает метод initAndShowGUI() , который пытается создать JFXPanel для последующего добавления в JFrame, но завершается неудачно со следующим сообщением об ошибке: Exception in thread «AWT-EventQueue-0» java.lang.RuntimeException: java.lang.UnsatisfiedLinkError: Can’t load library: C:\Users\User\bin\glass.dll . Эта библиотека, похоже, нужна JavaFX, но она как-то не загружена. «Чистые» приложения JavaFX (без Swing) вызывают что-то вроде метода «предварительной инициализации» для JFX, который загружает все необходимые библиотеки, я думаю (я не совсем уверен). Кроме того, я нашел информацию о том, как развернуть приложения или апплеты Java Web Start ( http://docs.oracle.com/javafx/2/deployment/deploy_swing_apps.htm ), но ничего о «стандартных» JAR.

Кто-нибудь делал это раньше? Я много раз искал решение, но так и не смог его найти. Помощь высоко ценится!

1 ответ

Вероятно, ваша проблема связана с упаковкой.

Как вы упаковали приложение?

Я знаю (по крайней мере), что последние два будут работать для сборки приложения Swing с компонентами JavaFX в исполняемый файл jar.

Образец SwingInterop включает в себя сценарий ant для упаковки образца в исполняемый файл jar. Образец можно загрузить с сайта загрузки javafx .

Я настоятельно рекомендую ознакомиться. Почему я должен использовать задачи JavaFX ant для упаковки моего Swing-приложения? в этот пост также входит исходный файл примера сборки SwingInterop.

Как создать исполняемый jar для JavaFX c MySQL?

Доброго времени суток.
Ситуация такая: есть JavaFX приложение, которое содержит несколько связанных fxml окон с контроллерами для каждого, которые также используют базу данных.
Нужно создать исполняемый jar. Делал так:

  1. File -> Project-> Structure -> Artifacts->JavaFX Application
  2. На вкладке JavaFX выбираю главный класс Login.java для поля Application class.
  3. Собираю, получаю jar файл.

После его запуска открывается стартовое окно Login.java, но после ввода авторизационных данных (берутся из базы MySQL), не происходит ничего, т.е. не открываются следующие fxml окна.
В jar вроде лежат все файлы проекта.

Небольшая ремарка: попробовал создать fxml без привязки к БД, открылся. Как я понимаю, проблема где-то в связи с БД.

Пять секретов. JAR-файлов

Архив Java — это не просто набор классов

Для большинства Java-разработчиков JAR-файлы и их специализированные собратья WAR- и EAR-файлы — это просто конечный результат длительного процесса работы в Ant или Maven. Стандартная процедура ― скопировать JAR в нужное место на сервере (или, реже, в компьютере пользователя) и забыть о нем.

На самом деле, JAR-файлы годятся не только для того, чтобы хранить исходный код. Просто нужно знать их возможности и способы реализации этих возможностей. Советы, приведенные в этом выпуске Пяти секретов, помогут выжать максимум из файлов архива Java (а в некоторых случаях также и файлов WAR/EAR), особенно в процессе развертывания.

В силу того, что многие Java-разработчики используют Spring (а также поскольку среда Spring представляет некоторые проблемы для традиционного использования JAR-файлов), некоторые из советов специально относятся к JAR-файлам в приложениях Spring.

Об этом цикле статей

Вы думаете, что знаете о Java-программировании все? На самом деле большинство разработчиков только скребет по поверхности платформы Java, изучив ее лишь настолько, чтобы выполнять свою работу. В этом цикле статей Тед Ньюард углубляется в функциональные возможности платформы Java, выявляя малоизвестные факты, которые могут помочь в решении самых заковыристых задач программирования.

Я начну с краткого примера стандартной процедуры работы с файлами Java Archive, которая будет служить основой для последующих советов.

Сохранение в JAR

Как правило, JAR-файл создают после компиляции исходного кода, чтобы собрать Java-код (который отделен от пакета) в одну коллекцию с помощью утилиты командной строки jar или, чаще, задачи jar Ant. Этот процесс достаточно прост, так что я не буду демонстрировать его здесь, хотя позже мы вернемся к теме конструкции JAR-файлов. Пока же нам просто нужно заархивировать Hello , отдельную утилиту консоли, которая решает невероятно полезную задачу вывода сообщения на консоль, как показано в листинге 1.

Листинг 1. Архивирование утилиты консоли

Утилита Hello делает не много, но это полезный пример для изучения JAR-файлов, начиная с выполнения кода.

1. JAR-файлы исполняемы

Развить навыки по этой теме

Этот материал — часть knowledge path для развития ваших навыков. Смотри Стать Java-разработчиком

Исторически языки типа.NET и C++ обладают преимуществом дружественного отношения к ОС: чтобы запустить приложение, достаточно просто набрать его имя в командной строке ( helloWorld.exe ) или дважды щелкнуть на соответствующий значок в оболочке графического интерфейса пользователя (GUI). В Java-программировании модуль запуска приложения — java — загружает в процесс JVM, и ему нужно передать аргумент командной строки ( com.tedneward.Hello ), указывающий класс, метод main() которого мы хотим запустить.

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

От этого можно уйти, сделав JAR-файл «исполняемым», так чтобы при его выполнении модуль запуска Java автоматически узнавал, какой класс нужно запустить. Для этого достаточно ввести в манифест JAR-файла ( MANIFEST.MF в подкаталоге архива JAR META-INF ) следующую запись.

Листинг 2. Указание точки входа

Манифест ― это просто набор пар имя/значение. Иногда манифест может придираться к символам пробела и возврата строки, так что простейший способ ― использовать для его создания Ant. В листинге 3 для определения манифеста применяется элемент manifest задачи Ant jar .


Листинг 3. Создание точки входа

Теперь, чтобы выполнить JAR-файл, пользователю достаточно ввести его имя в командную строку посредством команды java -jar outapp.jar . В некоторых GUI-оболочках это можно сделать и двойным щелчком на JAR-файле.

2. JAR-файлы могут включать сведения о зависимостях

С ростом популярности утилиты Hello возникла необходимость варьировать ее реализацию. Многими деталями этого процесса управляют контейнеры инъекции зависимостей (Dependency Injection — DI), такие как Spring или Guice, но есть одно «но»: изменение кода для включения контейнера DI может привести к результатам, подобным тому, что приведен в листинге 4.

Листинг 4. Hello, мир Spring!
Подробнее о Spring

Этот совет предполагает знакомство с инъекцией зависимостей и средой Spring. Чтобы освежить свои знания в той или другой области, обращайтесь к разделу Ресурсы.

Параметр -jar модуля запуска отменяет все, что находиться в параметре -classpath командной строки, поэтому при запуске этого кода Spring должен присутствовать в CLASSPATH и в переменной окружения. К счастью, JAR-файлы допускают объявление в манифесте других JAR-зависимостей, которые неявно создают CLASSPATH без необходимости объявлять его, как показано в листинге 5.

Листинг 5. Hello, Spring >

Обратите внимание, что атрибут Class-Path содержит относительную ссылку на JAR-файлы, от которых зависит приложение. Это можно написать в виде абсолютной ссылки или вообще без префикса, в предположении, что JAR-файлы находятся в том же каталоге, что и JAR приложения.

К сожалению, атрибут value Ant-атрибута Class-Path должен находиться в той же строке, поскольку манифест JAR не может работать с множественными атрибутами Class-Path . Так что все эти зависимости должны находиться в одной строке файла манифеста. Конечно, это некрасиво, но возможность написать java -jar outapp.jar того стоит!

3. На JAR-файлы можно ссылаться неявно

Когда есть несколько различных утилит командной строки (или других приложений), использующих среду Spring, удобно поместить JAR-файлы Spring в общую папку, посредством которой можно ссылаться на все эти утилиты. Это позволит избежать работы с несколькими копиями JAR-файлов, разбросанными по всей файловой системе. По умолчанию таким местом служит обычное местоположение среды выполнения Java для JAR-файлов, т.н. «каталог расширения», который находится в подкаталоге lib/ext каталога установки JRE.

Местоположение JRE можно изменять, но это делают так редко, так что для данной среды Java можно вполне безопасно предположить, что lib/ext — надежное место хранения JAR-файлов и что они будут неявно присутствовать в CLASSPATH среды Java.

4. Java 6 допускает подстановочные знаки в classpath

Во избежание громоздких переменных окружения CLASSPATH (от которых Java-разработчикам следовало бы отказаться много лет назад) и/или параметров командной строки -classpath в Java 6 введено понятие подстановочный знак classpath. Вместо того чтобы запускать каждый JAR-файл, явно указанный в аргументе, подстановочные знаки classpath позволяют написать lib/* , и в classpath попадут все JAR-файлы, перечисленные в этом каталоге (не рекурсивно).

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

5. JAR- файлы содержат не только код

Spring, как и многие другие составляющие экосистемы Java, зависит от файла конфигурации, определяющего организацию среды. А именно, Spring зависит от файла app.xml, который находится в том же каталоге, что и файл JAR — но разработчики часто забывают скопировать вместе с JAR-файлом файл конфигурации.

Цукерберг рекомендует:  Версии - Git. Поддержка двух разных версий

Некоторые файлы конфигурации редактируются системным администратором, но значительное их число (например, состав библиотеки Hibernate) находятся вне его ведения, что приводит к ошибкам при развертывании. Разумное решение ― упаковать файл конфигурации вместе с кодом — и это выполнимо, потому что JAR ― это в основном замаскированный ZIP. Просто при построении JAR включите файлы конфигурации в Ant-задачу или командную строку jar .

JAR-файлы могут содержать не только файлы конфигурации, но и файлы других типов. Например, если бы мой компонент SpeakEnglish должен был бы обращаться к файлу свойств, я бы сделал это примерно так, как показано в листинге 6.

Листинг 6. Произвольный ответ

Помещение responses.properties в JAR-файл означает, что файлов, о которых придется беспокоиться при развертывании наряду с JAR-файлами, стало на один меньше. Для этого достаточно включить файл responses.properties при создании JAR.

Однако как получить те свойства, которые хранятся в JAR-файле, назад? Если нужные данные расположены внутри одного и того же JAR-файла, как в предыдущем примере, не обязательно пытаться вспомнить местоположение этого JAR-файла и открывать его с помощью объекта JarFile . Вместо этого предоставьте ClassLoader данного класса найти его в качестве «ресурса» в составе JAR-файла, воспользовавшись методом ClassLoader getResourceAsStream() , как показано в листинге 7.

Листинг 7. >

Эта процедура работает с ресурсами любого рода: файлами конфигурации, аудиофайлами, графическими файлами и т.п. Файл практически любого типа можно поместить в JAR, полученный как InputStream (посредством ClassLoader ), и использовать любым способом.

Заключение

Эта статья раскрывает пять секретов JAR-файлов, обычно скрытых от большинства Java-разработчиков — по крайней мере, если основаться на истории и случаях из жизни. Отметим, что все советы, относящиеся к JAR-файлам, в полной мере справедливы и для WAR-файлов. Некоторые из них (в частности, атрибуты Class-Path и Main-Class ), в случае WAR-файлов не так полезны, потому что среда сервлетов сама собирает все содержимое каталога и имеет предопределенную точку входа. Тем не менее, взятые в совокупности, эти советы выводят нас за рамки парадигмы «Начнем с копирования всего в этот каталог. » При этом они значительно упрощают и процесс развертывания Java-приложений.

Следующая статья этого цикла: «Пять секретов контроля производительности Java-приложений».

Создаем JavaFX 2 приложение используя Maven

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

Создать JavaFX проект не проблема, но если идет речь о использовании Maven, то простое File->New Project->JavaFX уже не подойдет. Если вы еще не создавали JavaFX проектов, то к примеру в этом уроке вы можете освоить создание JavaFX приложения ‘Конструктор форм JavaFX Scene Builder в Intellij IDEA‘.

Шаг 1

Создаем Maven проект, так как у нас цель создать JavaFX приложение используя Maven.

После этого шага у вас создастся пустой Maven проект.

Шаг 2

Для того чтобы сделать с этого проекта JavaFX2 проект нам потребуется следующий maven плагин:

В 6-й строке мы указываем класс который будет запускать наше приложение.

Вот структура проекта с файлами которые мы ниже создадим:

А вот полностью содержимое файла pom.xml, который является конфигурационным файлом Maven:

Шаг 3

Теперь создадим класс, который мы указали в maven плагине и который отвечает за запуск приложения src\main\java\com\devcolibri\mavenjavafxapp\MainApp.java:


Теперь этот класс будет использоваться maven плагином для запуска приложения.

Шаг 4

Создаем src\main\resources\fxml\hello.fxml файл, который является отображением Scene нашего окна.

И после кликаем по нему правой кнопкой мыши и выбираем Open in SceneBuilder

После этого откроется окно SceneBuilder и в нем вы можете скомпоновать вид вашего приложения, у меня вышло так:

А в виде разметки он выглядит так:

Как вы видите в наш FXML использует контроллер, поэтому давайте его создадим, но пока оставим его пустым.

В будущем мы сможем писать какую-то логику в этом контролере.

Шаг 5

Теперь давайте соберем наше приложение с помощью Maven Install:

Distribution — Упаковка javafx приложения в исполняемый .jar файл

JAR (Java ARchive) — это Java-архив, который позволяет хранить в одном архивном файле все ресурсы Java-проекта. JAR-файлы делятся на две категории:
1) простые JAR-файлы
2) исполняемые JAR-файлы
У последних есть одна приятная особенность — в WinXP их можно запустить двойным щелчком мыши по значку.

В Eclipse существует специальная функция экспорта, которая позволяет быстро и без особого труда создавать исполняемые JAR-файлы. Допустим, мы создали некий тестовый проект. Вот как он выглядит в Eclipse:

Вот текст класса «Hello»:

public class Hello <
Hello( String msg) <

// Create a new JFrame container.
JFrame jfrm = new JFrame( «A Simple Swing Application» );

// Give the frame an initial size.
jfrm.setSize(275, 100);

// Terminate the program when the user closes the application.
jfrm.setDefaultCloseOperation(JF rame.EXIT_ON_CLOSE);

// Create a text-based label.
JLabel jlab = new JLabel(msg);

// Add the label to the content pane.
jfrm.add(jlab);

// Display the frame.
jfrm.setVisible( true );
>

public static void main( String args[]) <

SwingUtilities.invokeLater( new Runnable() <
public void run() <
new Hello( «Hello, world!» );
>
>);
>
>

Смысл в том, чтобы программа создала swing-frame и вывела туда волшебные слова «Hello, world!»

Дальше в разделе File выбираем строку Export. и в появившемся окошке выбираем опцию Runnable JAR file:

Следующим шагом необходимо определить спецификацию JAR-файла:

Вот тут мне пришлось немного повозиться с Launch configuration. Эта строка будет у вас пустой, пока вы не наведете мышку на свой Java-проект (у меня это проект mytests) и не откроете правой клавишей мыши контекстное меню, где вам надо будет выбрать Debug As -> Dubug Configuration:

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

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

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

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

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

Создание исполняемого файла 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 соответственно используется в качестве платформы для данного проекта.

    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. Нажмите кнопку «ОК» для закрытия диалогового окна «Свойства проекта».

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

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

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

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

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

    • К папке проекта (далее именуемой «папка PROJECT_HOME«) добавляются папки build и dist.
    • Все исходные файлы компилируются в файлы . >Примечание. Содержимое 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 надо выполнить следующие действия:

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

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

    • Включить полный путь к двоичному файлу java в третий этап данной процедуры. Например, необходимо будет ввести путь наподобие следующего, в зависимости от расположения файла JDK или JRE:
    • Добавить двоичные файлы 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. Давайте посмотрим на него:

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

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

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

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

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

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

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

    Девять аргументов представлены внутри пакетного файла как % , где должен иметь значение в пределах . %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 - подпись кода.


  • Сохраните все прочие параметры по умолчанию и нажмите кнопку "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(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: После этого поле должно содержать текст, подобный следующему:
    7. Нажмите кнопку "OК" для выхода из диалогового окна "Изменение действия для типа".
    8. Нажмите кнопку "OК" для выхода из диалогового окна "Изменение свойств типа файлов".
    9. Нажмите кнопку "Закрыть" для выхода из диалогового окна "Свойства папки".

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

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

    Установка переменной среды 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 необходимо добавить следующее:
    6. Нажмите кнопку "OК" для выхода из диалогового окна "Переменные среды", затем нажмите кнопку "ОК" для выхода из диалогового окна "Свойства системы".

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

    Что дальше?

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

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

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

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

    Последнее время все чаще встречаются программы сделанные в виде jar файла, вот только по двойному клику на значке из под виндов они редко запускаются.
    Для примера возьмем программу TimeFlow доступную для загрузки по адресу https://github.com/FlowingMedia/TimeFlow/downloads,
    загрузим и распакуем зип архив в любую папку.
    Дальнейшие действия с jar файлом предполагают что виртуальная ява машина уже установлена в системе. Дальнейшие инструкции предполагают что работаем с ОС виндовс.
    В распакованной папке рядом с файлом timeline.jar создадим еще один файлик и назовем его start.bat
    Запишем в него следующую строку


    Сохраняем файл, и теперь старуем программу через файлик start.bat Все должно работать.

    Алгоритм работы файла запускающего java приложение в виде jar файла следующий.
    1) Запустить среду выполнения под виндовс
    2) Распаковать файл
    3) Запустить распакованное содержимое.

    В приложения к статье добавлен пример приложения запускающего java программу в виде jar архива и готовый bat файл из примера к статье.

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

    Сборка и выполнение Java программ

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

    Сборка (англ. assembly) — двоичный файл, содержащий исполняемый код программы или (реже) другой подготовленный для использования информационный продукт.

    Автоматизация сборки — этап написания скриптов или автоматизация широкого спектра задач применительно к ПО, применяемому разработчиками в их повседневной деятельности, включая такие действия, как:

    1. компиляция исходного кода в бинарный код

    2. сборка бинарного кода

    3. выполнение тестов

    4. разворачивание программы на производственной платформе

    5. написание сопроводительной документации или описание изменений новой версии

    Для автоматизации сборки проектов традиционно используют системы сборки, такие как make на Unix подобных системах и nmakeдля компилятора Microsoft. Также традиционно написание файлов для сборки проекта под эти системы является задачей нетривиальной. Конечно, пользуясь только Mictosoft Visual Studio можно даже не подозревать о существовании этих файлов, так как интегрированная среда разработки достаточно удобно скрывает всю схему работы, оставляя снаружи несколько диалоговых окон и кнопку Build. Но для сложных проектов использующих массу сторонних библиотек и кроссплатформенных проектов такой подход часто оказывается неприемлемым.

    В рамках технологии .NET — двоичный файл, содержащий управляемый код. Когда компилятор платформы .NET создает EXE или DLL модуль, содержимое этого модуля называется сборкой. Сборка содержит в себе: номер версии, метаданные и инструкции.

    Make (http://www.gnu.org/software/make/) является одной из самых первых утилит, облегчающих процесс сборки проекта. Make утилита работает с Make-файлами определенного формата, основную структуру которых можно представить следующим образом:

    Простой пример make-файл построен "традиционным" способом. Все исходные файлы собираемой программы находятся в одном каталоге:

    Makefile

    Предполагается, что для компиляции программы используется компилятор GCC, и объектные файлы имеют расширение ".o". Пример make-файл:

    iEdit: main.o Editor.o TextLine.o

    main.o: main.h Editor.hTextLine.h

    Первое правило заставляет make перекомпоновывать программу при изменении любого из объектных файлов. Второе правило говорит о том, что объектные файлы зависят от соответствующих исходных файлов. Каждое изменение файла с исходным текстом будет вызывать его перекомпиляцию. Следующие несколько правил указывают, от каких заголовочных файлов зависит каждый из объектных файлов. Данный пример не использует ни одной функции из набора make, он не оптимальный (зачем перекомпилировать и пересобрать всё при изменении 1го файла) и громоздкий, за то простой и наглядный. При вызове make, будет взято 1е правило. Правила допускают рекурсии, поэтому написания доброкачественного (чтоб сборщик не умер в вечном цикле) make-файла, ложиться на плечи разработчика.

    Более подробно (на русском): Соглашения о make-файлах (http://www.opennet.ru/docs/RUS/make_compile/make.html#toc15).

    2. Принципы сборки в java

    2.1. Как работает java компилятор

    Текст программы — это исходный код программы на языке java.

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

    В итоге мы получаем набор файлов с расширением class. То есть, если мы используем сторонние библиотеки – мы должны указать их при сборке. Это могут быть скомпилированные классы или собранные подсистемы.

    Не всегда для компиляции необходимо указывать дополнительные библиотеки (к примеру, если у нас программа в 1 программный файл). Но если всё же это необходимо, то для этого компилятор java необходимо запустить с аргументом «-cp» (сокращение от --classpath). После этого аргумента идёт список библиотек (jar файлов или файлов class) разделённых символом разделителем файлов (в *nix это «:», в windows это «;»).

    Пример компиляции программы из одного файла:

    javacHelloWorld.java

    Пример компиляции программы c дополнительными библиотеками «myLib» и «my2ndLib»:

    javac -cp myLib.jar:my2ndLib.jar NotStandartHelloWorld.java

    В java нет разграничения между собранной библиотекой, исполняемым приложением или же подсистемой. Что имеется в виду, что если вы хотите создать самостоятельную сущность в едином файле, вы создаёте jar файл. К примеру, если вы создаёте библиотеку, то это будет jar файл с набором классов, который могут быть использованный другими разработчиками, если это подсистема, то это часть функционала (набор классов) вынесенная за рамки основного модуля, но используемая в нём (что то вроде частной библиотеки), и т.д..

    2.2. Выполнение java-программы.

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

    Если после компиляции у нас получилось 10 классов, то выполняем только класс который содержит функцию main, остальные классы должны быть представлены как библиотеки.

    К примеру, запуск программы c дополнительными библиотекой «sout», которая находиться в папку «lib» выглядеть так:

    java -cp lib/sout.jar HelloWorld

    По умолчанию, все классы в текущем каталоги включены в пути (-cp для классов в текущем каталоге указывать не надо). Что имеется в виду, если мы скомпилировали программу, и в итоге получили множество классов в одной папке, то мы можем запускать только лишь главный класс, остальные классы java попробует найти сама в текущем каталоге (Даже если они находятся во вложенных папках, java и туда заглянет).

    Такой подход допустим, когда у нас немного классов, но при больших системах перечисление всех классов не возможно (их количество может превышать тысячи …). Поэтому можно выполнять не класс, а специально собранный jar-файл. Для этого необходимо указать аргументы -jar.

    java -cp lib.jar -jar myApp.jar


    Jar-файл — это ZIP архив (то есть вы можете разархивировать его). Jar-файл должен в себе содержать набор классов и файл META-INF/MANIFEST.MF, в котором описаны характеристики данного jar-файла.

    Основной вариант создания Jar-файла:
    jar cf jar-file input-file(s)

    Jar – это утилита и набора утилит которые вы получаете при установке java.

    Программа jar принимает аргументы в old-UNIX стиле: вначале идут ключи потом аргументы программы, ключ с аргументом указывается последним, не указывать «-» перед аргументами, группировать короткие аргументы («cf» значит «-c -f »).

    1. Опция c — говорит о том, что вы хотите создать (create) jar-файл.

    2. Опция f — говорит о том, что вы хотите создать файл (file) с определённым именем (при выполнении данного примера создастся файл с именем «jar-file.jar»).

    3. Аргумент input-file(s) является разделенный пробелами список из одного или нескольких файлов, которые вы хотите включить в ваш JAR-файл. input-file(s) аргумент может содержать символ «*». Если любой из входных является каталогом, содержимое этих каталогов добавляются в архив JAR рекурсивно.

    Когда вы создаете JAR-файл, он автоматически получает файл манифеста по умолчанию (если вы его не указали во входных файлах – он будет создан автоматически). В jar-файле может быть только один файл манифеста с указанным путём:

    Общая структура манифеста имеет вид:

    Заголовок: значение

    Все символы пробелов (\n, \r, \t, …) в «значении» будут удалены, к примеру, манифест:

    Packaging a Java App for Distribution on a Mac

    These documentation pages are no longer current. They remain available for archival purposes. Please visit https://docs.oracle.com/javase for the most up-to-date documentation.

    This page shows you, step by step, how to convert a simple Java application to a version you can distribute on a Mac. To follow along, download the ButtonDemo (.zip) example from the Java Tutorial. This example was created using NetBeans which uses the Ant utility. You can run all necessary tools and make all necessary edits from the command line, without launching NetBeans. The Ant tool is required.

    You have created a Java application and want to bundle it for deployment. This requires the following steps:

    Create a JAR File

    This step creates the ButtonDemo.jar file.

    Execute ant jar in the high-level project directory to create the dist/ButtonDemo.jar file. This jar file is used to create the .app package.

    Bundle the JAR File into an App Package

    To create the ButtonDemo.app package, use the appbundler tool. The appbundler is not shipped with the 7u6 version of the Oracle JDK for the Mac. You can download it from the Java Application Bundler project on java.net. There is also AppBundler Documentation available.

    As of this writing, the most recent version is appbundler-1.0.jar, which is used by this document. Download the latest version available and substitute the file name accordingly.

    1. Install the appbundler-1.0.jar file. In this case, create a lib directory in the high-level project directory and add the appbundler-1.0.jar file.
    2. Modify the build.xml file in the high-level project directory as follows. (The added code is shown in bold.)
    3. Invoke the appbundler by typing ant bundle-buttonDemo from the high-level project directory. This creates the ButtonDemo.app package in the dist directory.
    4. You should now be able to launch the application by double clicking ButtonDemo.app in the Finder, or by typing open ButtonDemo.app at the command line.

    Bundle the JRE with the App Package

    In order to distribute a Java application, you want to avoid dependencies on third party software. Your app package should include the Java Runtime Environment, or JRE. In fact, the Apple Store requires the use of an embedded JRE as a prerequisite for Mac App Store distribution. The runtime sub-element of the task specifies the root of the JRE that will be included in the app package.

    In this example, the location of the JRE is defined using the JAVA_HOME environment variable. However, you might choose to bundle a JRE that is not the same as the one you are using for development. For example you might be developing on 7u6, but you need to bundle the app with 7u4. You will define runtime accordingly.

    Since this example defines the runtime sub-element using JAVA_HOME, make sure it is configured correctly for your environment. For example, in your .bashrc file, define JAVA_HOME as follows:

    Use the following steps to modify the build.xml file at the top of the project directory:

    1. Specify an environment property, named env:
    2. In the target that creates the bundle, specify the location of the JRE on your system, using the env property:

    The resulting build.xml file should look like the following. (The new lines are shown in bold.)

    Create a fresh version of ButtonDemo.app, using the ant bundle-buttonDemo command. The resulting version includes the JRE in the app package. You can confirm this by examining the Contents/PlugIns directory inside of the app package.

    Sign the App

    The Gatekeeper feature, introduced in Mountain Lion (OS X 10.8), allows users to set the level of security for downloaded applications. By default, Gatekeeper is set to allow only OS X App Store and Developer ID signed applications. Unless your app is signed with a Developer ID certificate provided by Apple, your application will not launch on a system with Gatekeeper's default settings.

    For information on the signing certificates available, see Code Signing Tasks on developer.apple.com.

    The signing certificate contains a field called Common Name. Use the string from the Common Name field to sign your application.

    Sign your app using the codesign(1) tool, as shown in the following example:

    To verify that the app is signed, the following command provides information about the signing status of the app:

    To check whether an application can be launched when Gatekeeper is enabled, use the spctl command:

    If you leave off the --verbose tag, and it does not print any output, indicates 'success'.

    Submitting an App to the Mac App Store

    Packaging an app for the Mac App Store is similar to packaging for regular distribution up until the step of signing the app. Signing the app for the Mac App Store requires a few more steps, and a different kind of certificate.

    Цукерберг рекомендует:  Первый шаблон HTML на Pug
    Понравилась статья? Поделиться с друзьями:
    Все языки программирования для начинающих