Вставить JRE в исполняемый файл Windows?

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

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

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

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

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

Ответы

Ответ 1

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

Ответ 3

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

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

Существуют два ключа с открытым исходным кодом GCJ и VMKit

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

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

http://www.ikvm.net/

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

Ответ 4

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

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

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

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

Ответ 7

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

http://www.ej-technologies.com/products/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.

Ответ 8

JSmooth может сделать это в соответствии с документацией. Я только пробовал это без встроенной JRE, но был очень доволен. Это сценарий с ant, и мы строим на Linux.

http://jsmooth.sourceforge.net/features.php

Ответ 10

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

Ответ 11

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

Если вы получаете soft miminizejre by packr, чем скопируйте приложение myapp.jar в launcher\jre\bin\

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

Вход для входа Open Engima → javaw.exe из запуска \jre\bin\

И перейдите в Options, если вам нужен высокий компресс и Найти Разное → Командная строка "-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... Надеюсь, вы довольны собственным банком в exe, поскольку меньше 4 mb без каталога lib. Если у вас есть проблема с сообщением об ошибке jvm.cfg, это означает, что вы не копируете встроенный exe в root каталог jre или jdk

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

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

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

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

//EDIT:

ОБНОВЛЕННАЯ НОВАЯ ВЕРСИЯ EXCELSIOR JET + VIRTUAL BOX ИЛИ PROTECTOR - это почти лучшие "встроенные приложения"

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