Вставить JRE в исполняемый файл Windows? - PullRequest
59 голосов
/ 13 февраля 2010

Предположим, я хочу распространять Java-приложение.

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

Теперь предположим, что я хочу распространять его как файл .exe в Windows. Это достаточно просто, учитывая хорошие инструменты (такие как Launch4j и подобные).

Но теперь предположим, что я также не хочу зависеть от того, установлен ли у конечного пользователя правильный JRE (или вообще какой-либо JRE). Я хочу распространять JRE с моим приложением, и мое приложение должно работать на этом JRE. Достаточно просто создать исполняемый файл установщика Windows и встроить в него папку со всеми необходимыми JRE-файлами. Но потом я распространяю установщик , а не однофайловое приложение.

Есть ли способ встроить приложение, и в JRE, в файл .exe, выполняющий функцию средства запуска приложения (а не установщика)?

Ответы [ 11 ]

24 голосов
/ 19 июля 2012

Попробуйте использовать Птичий и ProGuard инструментарий. Avian позволяет встроить легкую виртуальную машину в ваше приложение. Linux, MacOS, Windows и iOS поддерживаются. А ProGuard позволяет вам сжать большой файл JAR для подготовки к вставке.

11 голосов
/ 21 июля 2014

Существует новый инструмент, который делает это: Packr
https://github.com/libgdx/packr

7 голосов
/ 13 февраля 2010

Довольно много вариантов, коммерчески это очень хорошо:

http://www.excelsior -usa.com / jet.html

Есть две ключевые опции с открытым исходным кодом GCJ и VMKit

http://gcc.gnu.org/java/ и http://vmkit.llvm.org/

Другие более длинные пути могут включать IKVM.NET:

.

http://www.ikvm.net/

. JVM .NET, которая может быть статически скомпилирована в EXE

4 голосов
/ 13 февраля 2010

Есть ли способ встроить как приложение, так и JRE в файл .exe, выполняющий функцию средства запуска приложения (а не установщика)?

Если вам подходит коммерческий инструмент, install4j решает эту проблему очень плавно (см. Страницу «Функции» ). Он может генерировать как приложений запуска, так и установщиков.

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

Сводка / нижняя строка: install4j может создавать собственные программы запуска .exe, которые абсолютно не зависят от предустановленной JRE (или любых других конкретных библиотек) и предлагают гибкие возможности для объединения (и определения ) JRE.

3 голосов
/ 23 ноября 2014

Netbeans позволяет упаковывать проект Java SE в собственный установщик приложений, встраивая JRE. Это здесь: https://netbeans.org/kb/docs/java/native_pkg.html:)

1 голос
/ 08 августа 2013

Я знаю, что немного опоздал на эту вечеринку, однако похоже, что у ej-technologies (обожаю их вещи) есть новое решение под названием exe4j, которое будет работать именно так, как этого хотел ОП, без каких-либо забавных дел. 1002 *

http://www.ej -technologies.com / Продукты / exe4j / overview.html

Если вы работаете в проекте OpenSource, они предоставляют бесплатные лицензии (вам просто нужно связаться с ними). Если это коммерческий проект, то требуется лицензия ... но за лицензию 69 долларов США, это чертовски дешево и стоит imho.

С их сайта:

If you want your own process name instead of java.exe in the task manager
and a user friendly task-bar grouping, exe4j does the job for you.

exe4j helps you with starting your Java applications in a safe way, displaying
native splash screens, detecting or distributing suitable JREs and JDKs,
startup error handling and much more.
0 голосов
/ 15 октября 2016

Я нашел проектор Engima x86 / x64 лучше, чем BoxedApp Packer

Если вы получаете мягкую утилиту miminizejre от packr, чем скопировать ваше приложение myapp.jar в панель запуска \ jre \ bin \

и скопируйте из установленного jre примера C: \ Program Files \ Files \ Java \ 1.8.0_xxx \ bin \ javaw.exe в панель запуска \ jre \ bin \

Открыть ввод Engima Protector -> javaw.exe из программы запуска \ jre \ bin \

И зайдите в Опции, если вы хотите высокое сжатие и Найти Разное -> Командная строка "-jar myapp.jar"

И нажмите «Защита» и подождите, пока целые dll и jar в exe

Убедитесь, что ваш myapp.jar должен сгенерироваться Eclipse с «Упаковать необходимые библиотеки в сгенерированный JAR», потому что вы не волнуетесь, импортировали ли вы много библиотек, например, lwjgl или JavaFX, чем вы должны проверить, содержит ли встроенный javaw_protected.exe важный файлы примеров активов.

Но BoxedApp Packer тоже такой же BoxedApp Packer немного больше, чем Engima Protector. Protector - почти лучшее маленькое вложение javaw.exe с ресурсами / ресурсами. Чем они не могут взломать JAR-файлы ... Я надеюсь, что вы довольны собственным JAR-файлом в exe-файле размером менее 4 МБ без каталога lib - Если у вас есть проблема с сообщением об ошибке jvm.cfg Это означает, что вы не копируете встроенный exe-файл в root Справочник JRE или JDK

Пожалуйста, убедитесь, что встроенный exe находится здесь вне корневого каталога jre или jdk.

Надеюсь, у вас нет проблем, если вы используете Protector x86, а не i586, Protector x64 для jre x64

Если вы используете Protector x64 с jre x86 / i386 - ничего страшного. Работает нормально.

С наилучшими пожеланиями

// РЕДАКТИРОВАТЬ:

ОБНОВЛЕННАЯ НОВАЯ ВЕРСИЯ EXCELSIOR JET + ВИРТУАЛЬНАЯ КОРОБКА ИЛИ ЗАЩИТА - почти лучшие «встроенные приложения»

Проверьте YouTube: https://www.youtube.com/watch?v=ctbIxq-1MGE

0 голосов
/ 08 июня 2012

Install4j - отличный инструмент для этой цели. Также вы можете проверить JSmooth или launch4j-all, хотя я пытался связать jres с JSmooth и не смог ..

0 голосов
/ 24 ноября 2011

Вы можете взглянуть на: http://ulibgcj.sourceforge.net/uswt.html Он имеет библиотеку micro-swt, которая упрощает создание графического интерфейса с помощью SWT и взгляните на Eclipse GCJ Builder

...