Страницы

Поиск по вопросам

четверг, 28 ноября 2019 г.

Можно ли как сделать, чтобы jar файл запускался на компьютерах без установленного JRE? Может быть как-то внедрить внутрь?

#java #javafx


Есть приложение Javafx, запускается там, разумеется, где есть jre. Можно ли как сделать,
чтобы jar файл запускался на компьютерах без установленного JRE? Может быть как-то
внедрить внутрь?
    


Ответы

Ответ 1



Если вы работаете в IntellijIDEA, можете воспользоваться встроенным механизмом генерации автономных файлов Cоздайте артефакт: File -> Project Structure -> Project Settinfs -> Artifacts -> + ->javaFX Application -> From module 'Your Module Name' Справа во вкладке JavaFX задайте: Application Class: ваш класс с точкой входа - методом main Native Bondle: All Проверьте, что Output directory задана правильно (по умолчанию в папку out\artifacts вашего проекта) Сбилдите артефакт: Build -> Build Artifacts -> 'Ваш артифакт' -> Build В out/artifacts/ появится директория с исполняемым файлом ваш артефакт.exe и необходимой средой исполнения. Скопировав папку на дугой компьютер вы можете запустить проект без установленной JRE, т.к. все что нужно находится в одной папке с исполняемым файлом.

Ответ 2



Это возможно. Есть специальные программы, которые компилируют ваш код заранее (AOT компиляция) и оборачивают его в исполняемый файл вашей ос, который вдобавок содержит портативную JRE. Знаю одну такую, называется Excelsior JET, правда не юзал её с приложениями javafx, но со стандартной библиотекой и swing работает нормально.

Ответ 3



Часто используемый способ - это скачать launch4j, натравить его на свой jar-файл и получить исполняемый файл. По сути это самораспаковывающийся архив с запускалкой, JRE и оригинальным файлом внутри, но пользователю это не видно. Более правильный способ - это использовать jlink: Структура каталогов простейшего проекта src └───com.example │ module-info.java │ └───com └───example App.java module-info.java module com.example { } App.java package com.example; public class App { public static void main(String[] args) { System.out.println("Hello World!"); } } Команды сборки javac -d build\mods\com.example src\com.example\module-info.java src\com.example\com\example\App.java jar --create --file=build\libs\com.example.jar --main-class=com.example.App -C build\mods\com.example . jlink --module-path build\mods --add-modules com.example --output build\app\example --launcher start=com.example/com.example.App --compress=2 --no-header-files --no-man-pages --strip-debug В результате в каталоге build\app появится каталог приложения example, который содержит в себе JRE и и саму программу в готовом для распространения виде. Запуск осуществляется с помощью батника - example\bin\start.bat Естественно, лучше не набирать команды руками, а поручить это сборщику - Maven или Gradle.

Комментариев нет:

Отправить комментарий