Я запрограммировал Java-программу в JCreator, все сделано, но я хочу создать из нее исполняемый файл, то есть я не хочу запускать программу, загружая классы Java и компилируя, а затем исполняю, но вместо этого это как отдельный исполняемый файл.
Какой самый быстрый способ сделать это?
Вы можете использовать инструмент jar в комплекте с SDK и создать исполняемую версию программы.
Вот как это делается.
Я отправляю результаты из командной строки, потому что это проще, но то же самое должно применяться при использовании JCreator.
Сначала создайте свою программу:
$cat HelloWorldSwing.java package start; import javax.swing.*; public class HelloWorldSwing < public static void main(String[] args) < //Create and set up the window. JFrame frame = new JFrame(«HelloWorldSwing»); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JLabel label = new JLabel(«Hello World»); frame.add(label); //Display the window. frame.pack(); frame.setVisible(true); >> class Dummy < // just to have another thing to pack in the jar >
Очень просто, просто отображает окно с “Hello World”
Как конвертировать из jar в exe файл
Затем скомпилируйте его:
$javac -d . HelloWorldSwing.java
В папке “Пуск” Dummy.class и HelloWorldSwing.class были созданы два файла.
$ls start/ Dummy.class HelloWorldSwing.class
Следующий шаг, создайте файл jar. Каждый файл jar имеет файл манифеста, где атрибуты, относящиеся к исполняемому файлу, являются.
Это содержимое моего файла манифеста.
$cat manifest.mf Main-class: start.HelloWorldSwing
Просто опишите, что такое основной класс (тот, у кого есть основной метод static void main)
Как только манифест готов, вызывается исполняемый файл jar.
У него много вариантов, здесь я использую -c -m -f (-c для создания jar, -m, чтобы указать файл манифеста, -f = файл должен быть назван..) и папку, которую я хочу к банке.
$jar -cmf manifest.mf hello.jar start
Это создает файл .jar в системе
Вы можете позже просто дважды щелкнуть по этому файлу, и он будет работать как ожидалось.
Чтобы создать файл .jar в JCreator, вам просто нужно использовать меню “Инструменты”, создать банку, но я не уверен, как туда проходит манифест.
Я думаю, что вы можете перейти к другим ссылкам, опубликованным в этой теме, когда вы знакомы с этим подходом “.jar”.
Вы также можете использовать jnlp (Java Network Launcher Protocol).
Я не совсем понимаю, что вы имеете в виду.
Но я предполагаю, что вы имеете в виду одну из двух вещей.
- Вы хотите создать исполняемый файл .jar
Eclipse может сделать это очень легко. Файл → экспортировать и создать банку и выбрать соответствующий основной класс, и он будет генерировать .jar для вас. В Windows вам может потребоваться связать jar с java-временем выполнения. aka Hold shift down, Right Нажмите “открыть с”, перейдите на свой jvm и свяжите его с javaw.exe
Создание ПК программы на JavaScript за 20 минут! Библиотека Electron JS
- создайте фактический .exe файл, тогда вам нужно использовать дополнительную библиотеку, например
http://jsmooth.sourceforge.net/ или http://launch4j.sourceforge.net/ создаст родной .exe-заглушка с красивым значком, который по существу загрузит ваше приложение. Они даже выясняют, есть ли у вашего клиента не установленная JVM и предложили вам ее получить.
Если вы используете Eclipse, вы можете попробовать выполнить следующие 7 шагов, чтобы получить файл .exe для Windows.
Теперь у вас есть JAR файл. Используйте java -jar path/jarname.jar для выполнения.
Если вы хотите преобразовать это в .exe, вы можете попробовать http://sourceforge.net/projects/launch4j/files/launch4j-3/
STEP7:
Дайте XML файлу соответствующее имя и нажмите “Сохранить”. Файл .xml является стандартным, не беспокойтесь об этом. Теперь будет создан ваш исполняемый файл!
В командной строке перейдите к корневому каталогу файлов Java, которые вы хотите выполнить.
Используйте эту команду:
jar -cvf [name of jar file] [name of directory with Java files]
Это создаст каталог META-INF в архиве баннеров. В этом META-INF есть файл под названием MANIFEST.MF, откройте этот файл в текстовом редакторе и добавьте следующую строку:
Main-Class: [fully qualified name of your main class]
то используйте эту команду:
java -jar [name of jar file]
и ваша программа запустится:)
Взгляните на WinRun4J. Это только окна, но это потому, что у unix есть исполняемые скрипты, которые выглядят (пользователю) как бункеры. Вы также можете легко модифицировать WinRun4J для компиляции в unix.
Для этого требуется файл конфигурации, но опять же, перекомпилируйте его с жестко закодированными параметрами, и он работает как ex-config-less.
Jexecutable может создавать Windows exe для программ Java. Он вставляет банки в файл exe, и вы можете запускать его как программу Windows.
Вы можете использовать GCJ для compile ваша программа Java в собственный код.
В какой-то момент они даже скомпилировали Eclipse в родная версия.
Напишите script и сделайте его исполняемым. script должен выглядеть так, как вы обычно использовали в командной строке:
java YourClass
Предполагается, что вы уже скомпилировали ваши .java файлы и что java может найти ваши .class файлы. Если java не может найти ваши .class файлы, вам может потребоваться использовать параметр -classpath или установить переменную среды CLASSPATH.
Java Web Start – хорошая технология для установки Java-богатых клиентов из Интернета прямо на рабочий стол конечного пользователя (будь то ОС Windows, Mac или * nix). Он поставляется в комплекте с интеграцией настольных систем и автоматическими обновлениями, среди многих других лакомств.
Для получения дополнительной информации о JWS см. страницу JWS.
Как и было предложено ранее, вы можете посмотреть на start4j, чтобы создать исполняемый файл для вашего JAR файла. Кроме того, есть что-то, называемое “JExePack”, которое может поместить обертку .exe вокруг вашего файла jar, чтобы вы могли перераспределить его (обратите внимание: клиенту в любом случае понадобится JRE для запуска программы на своем ПК)
Exes, созданный с помощью GCJ, не будет иметь этой зависимости, но этот процесс немного больше задействован.
Если вы используете NetBeans, вы просто нажимаете f11, и ваш проект будет создан.
Путь по умолчанию – projectfolderdist
Источник: techarks.ru
Как в IntelliJ IDEA написать и собрать в исполняемый .exe файл приложение на JavaFX
Как я уже писала в своей предыдущей статье, недавно, после двухлетнего обучения (обещали 12 месяцев, но жизненные и геополитические обстоятельства внесли свои коррективы в сроки получения дополнительного образования), я стала java-разработчиком.
Завершение обучения требовало написания выпускного проекта, которым я, изрядно поразмыслив, решила «убить сразу несколько зайцев»:
— проект должен быть написан мной самостоятельно (без команды),
— быть законченным и полноценным с точки зрения «бэка и фронта»,
— функционал проекта должен нести какую-то информативную пользу,
— проект станет подарком на день рождения.
Вспомнив все, чему меня «пытались научить», я решила, что за 1,5 месяца, отведенных на выпускную работу (с учетом загруженности по основному месту своей занятости), я вполне самостоятельно справлюсь с написанием оконного приложения для рабочего стола по предоставлению пользователю текущих и прогнозных значений погоды. Оболочку приложения решила выполнить на JavaFX, а для получения данных о погоде использовать JSON.
Когда я выслала преподавателю техническое задание с характеристиками проекта, он, восседая на удобном кресле где-то в пригороде германского города Мюнхен, меня, великовозрастную студентку из Санкт-Петербурга, «обрадовал и окрылил» тем, что знания по JavaFX в реальной жизни мне не пригодятся, и я рискую впустую потратить время…
Ну что же, такая откровенность на завершающей стадии обучения, конечно, похвальна. Осознав, что целый курс, посвященный разработке приложения на JavaFX, получается, еще год назад был пустой тратой времени, я решила не отступаться и попробовать реализовать задуманное.
Процесс и трудности, с которыми пришлось столкнуться
Не особо вдумываясь в тонкости платформы JavaFX и ее представлении в выпусках Java-8, я решила писать приложение на JDK-1.8 в среде разработки IntelliJ IDEA Community Edition, используя maven.
Начиная создавать проект стандартным путем и пытаясь упростить себе жизнь, я выбрала настройки, как показаны на скриншоте:
и, нажав на кнопку «Next», получила неожиданное для себя сообщение:
Да-да, я не знала той тонкости, что JavaFX, представленный как часть выпуска Java-8, был удален из JDK и перенесен в отдельный модуль в Java-11.
Ну что же, начав все сначала, я выбрала JDK-11.0.2, и у меня чудесным образом создался проект с необходимыми классами и ресурсными файлами, со всеми нужными зависимостями и способами сборки, автоматически прописанными в pom.xml файле:
Чтобы проверить, действительно ли работает минимальный функционал будущего приложения, я запустила класс HelloApplication.java и получила результат, свидетельствующий, что все в порядке:
Далее была длительная полуторамесячная работа над проектом, в процессе которой:
— я внесла изменения в базовый код, сформированный IntelliJ IDEA автоматически,
— создала сцены с помощью JavaFX Scene Builder 2.0,
— установила получение информации по JSON,
— и прочее, прочее, прочее… пока в среде разработки все не начало запускаться, открываться и отображаться так, как мне бы хотелось.
С финальной версией проекта и демонстрацией его возможностей можно ознакомиться на GitHub.
Теоретически, проект готов, образовательная цель достигнута, его можно сдать как выпускную работу и выдохнуть.
Но, не забываем, программа должна была стать подарком на день рождения. У именинника не установлена Java, чтобы запустить jar-файл проекта и наслаждаться результатом работы приложения. Значит, нужно собрать проект в исполняемый .exe файл, который будет запускаться на любом устройстве с установленной системой Windows.
«Ерунда какая!» — подумала я, — «У меня же IntelliJ IDEA, она все сама соберет и подскажет, в случае чего».
Захожу в File -> Project Settings -> Artifacts -> JavaFx application -> From Module ‘имя модуля’
Добавляю к артефакту всю библиотеку зависимостей, что у меня есть в проекте (краем глаза вижу красные символы, которые должны бы вызвать тревогу и заставить меня призадуматься, но я так увлечена процессом, что не придаю им значения):
Заполняю сведения об основном классе, который запускает приложение (поле Application class):
В той же вкладке указываю значение «all» в поле Native bundle и применяю настройки:
После вхожу в режим Build -> Build Artifacts, выбираю только что созданный артефакт и… получаю сообщение, что используемая версия JDK не способна собрать мой проект в необходимый пакет:
Начитавшись всего, чего только возможно, во всемирной паутине, я решаюсь на эксперимент:
1. Заменила в pom.xml файле версию Java 11 на 8, обновилась:
2. В File -> Project Structure -> Project указала корректную версию используемой SDK:
3. Закомментировала (можно удалить) файл module-info.java, сформированный Java-11 автоматически при создании проекта:
4. Проверила, запускается ли приложение до сборки:
5. Описанными выше способами снова создала и собрала артефакт. Но! – опять получила ошибку:
6. После непродолжительных поисков причины я поняла, что на ноутбуке, на котором написана моя программа, собрать ее в исполняемый .exe файл у меня пока не получится, т.к. в наименовании пути к директории не должно быть ни кириллицы, ни специальных символов:
И изменение имени учетной записи Windows вручную не приведет к изменению имени пользовательской папки.
7. Не рискнув «копаться в мозгах» установленной на ноутбуке операционной системы, я воспользовалась стационарным компьютером, не имеющим в наименовании директорий кириллицу, и спокойно собрала проект.
Запускаемый .exe файл располагается в папке outartifactsназвание артефактаbundlesназвание проекта:
Вместо заключения
При кажущейся простоте создания приложения на JavaFX (особенно с помощью JavaFX Scene Builder 2.0 и бесплатных видео-уроков на различных ресурсах), написание функционала программы – это только половина пути. Программа должна работать, жить своей жизнью самостоятельно, без привязки к среде разработки. И, как показывает мой личный опыт, при сборке проекта и выпуске его в «большой мир» приходится преодолевать немало терний.
Надеюсь, что моя статья поможет кому-нибудь избежать ошибок, найти ответы на вопросы или просто сразу пойти правильным путем (например, создавать обычный maven-проект на Java-8, вручную прописывая в pom.xml зависимости и способ сборки, и всегда указывать на латинице имена учетных записей, директорий в своей операционной системе).
Источник: temofeev.ru
1. Используйте Eclipse, чтобы сначала ввести проект Java в пакет jar.
(1) Найдите проект Java, который нужно преобразовать в exe.
(2) Экспортируйте соответствующий проект Java.
(3) Выберите файл Java-> JAR.
(4) Выполните следующие действия, затем нажмите «Готово» для завершения.
(5) Можно сгенерировать соответствующий пакет jar (файл ExeDemo.jar).
2. Используйте инструмент exe4j для преобразования пакета jar в exe.
(1) Скопируйте каталог lib пакета jar, на который есть ссылка в проекте Java, в каталог ExeDemo.
(2) Скопируйте среду jre, установленную на вашем компьютере, в каталог ExeDemo.
(3) В каталоге ExeDemo вы можете создать каталог нового изображения (имя можно запустить самостоятельно) для хранения значков, на которые будет ссылаться JFrame.
Что касается пути в программе, вы можете обратиться к следующему коду:
mainJFrame.setIconImage(newImageIcon(System.getProperty(«user.dir»)+»\image\logo.jpg»).getImage());
(4) Установите инструмент exe4j (скачать из Интернета, я использую exe4j 5.0)
(5) Откройте инструмент exe4j и нажмите Далее.
(6) Выберите JAR в режиме EXE.
(7) Введите короткое имя исполняемой программы и место вывода исполняемой программы.
(8) Введите имя приложения.Если вы хотите добавить в программу значок ico, на этом этапе вы можете выбрать положение значка ico в красном поле.
(9) На этом шаге нужно выбрать создание 64-разрядной исполняемой программы exe.
(10) На этом этапе нужно выбрать пакет jar для добавления и добавить пакет JAR [ExeDemo.jar], упакованный в проект Java, и внешне зависимый пакет JAR в проекте Java [то есть пакет JAR в библиотеке папка] .Выберите основной класс (cn.demo.UIMain) в соответствии с реальной ситуацией в проекте Java.
Если это проект JAVA, то это проект UTF-8. Чтобы предотвратить искажение символов при чтении и записи китайских строк в проекте JAVA, вы можете добавить здесь параметр в красное поле (-Dfile.encoding = utf- 8)
Если при упаковке присутствуют искаженные символы, установите код при упаковке: VMP Параметры Configurejava для вызова exe4j
Введите: -Dfile.encoding = utf-8, чтобы предотвратить искажение символов в упакованном exe.
(11) Заполните минимальные требования к версии JRE.
(12) Добавьте и выберите последовательность поиска JRE, которая является последовательностью поиска среды JRE.
И используйте маленькую синюю стрелку в правом нижнем углу, чтобы поместить jre в проект наверху, чтобы, когда exe ищет JRE, предпочтительнее JRE, содержащаяся в папке ExeDemo.
(13) Выбрать Далее
(14) Выбрать Далее
(15) Наконец, можно сгенерировать исполняемую программу ExeDemo.exe.
(16) Дважды щелкните, чтобы запустить программу.
Источник: russianblogs.com