Встроить JRE в исполняемый файл Windows?
предположим, я хочу распространять приложение Java.
предположим, я хочу распространять его как отдельный исполняемый файл. Я мог бы легко построить .jar как с приложением, так и со всеми его внешними зависимостями в одном файле (с некоторым муравьиным взломом).
теперь предположим, что я хочу распространять его как .exe-файл на Windows. Это достаточно легко, учитывая хорошие инструменты (такие как Launch4j и любит).
но предположим теперь, что я не хочу зависеть от конечный пользователь, имеющий право JRE (или любой JRE вообще, если на то пошло) установлен. Я хочу распространять JRE с моим приложением, и мое приложение должно работать на этом JRE. Достаточно просто создать исполняемый файл установщика Windows и встроить в него папку со всеми необходимыми файлами JRE. Но тогда я распространяю installer и ни одного файла приложения.
есть ли способ встроить оба приложения,и A JRE, в an .exe-файл, выступающий в качестве средства запуска приложений (а не как установщик)?
11 ответов:
попробуйте использовать птиц и должны быть справочники. Avian позволяет встроить облегченную виртуальную машину в ваше приложение. Поддерживаются Linux, MacOS, Windows и iOS. И ProGuard позволяет вам сжимать большой файл jar для подготовки к встраиванию.
есть новый инструмент, который делает это: Packr
https://github.com/libgdx/packr
довольно много вариантов вокруг, коммерчески это очень хорошо:
http://www.excelsior-usa.com/jet.html
есть два ключевых варианта с открытым исходным кодом GCJ и VMKit
http://gcc.gnu.org/java/ и http://vmkit.llvm.org/
другие более длительные пути будут включать IKVM.NET:
который является .NET JVM, который может быть статически скомпилированный ехе
есть ли способ встроить как приложение, так и JRE, в an .exe-файл, действующий как средство запуска приложений (а не как установщик)?
если коммерческий инструмент подходит для вас, install4j решает эту проблему очень плавно (см. "свойства" страницы). Он может генерировать и пусковые установки и установщики приложений.
Я бы не хотел повторяться слишком много, поэтому проверьте, например,это раньше ответ где я подключил его (как установщик builder, но это не имеет большого значения здесь).
сводка / итог: install4j может создать собственный .exe пусковые установки, которые абсолютно делают не зависит от предустановленного JRE (или любых других конкретных библиотек), и он предлагает гибкие возможности для связывания (и обнаружения) JRE.
Netbeans позволяет упаковывать проект Java SE в собственный установщик приложений, встраивая JRE. Это здесь:https://netbeans.org/kb/docs/java/native_pkg.html :)
Я знаю, что немного опоздал на эту вечеринку, однако похоже, что ej-technologies (люблю их вещи) имеет новое решение под названием
exe4jкоторый будет делать именно так, как OP хотел без каких-либо смешных дел, необходимых.http://www.ej-technologies.com/products/exe4j/overview.html
Если вы работаете в проекте с открытым исходным кодом, они обеспечивают свободные лицензии (вам просто нужно связаться с ними). Если это коммерческий проект, то требуется лицензия... но в $69 USD за лицензию, это чертовски дешево и стоит имхо.
С их сайта:
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.
JSmooth может сделать это в соответствии с документацией. Я только попробовал его без встроенного JRE, но был очень доволен. Это сценарий с ant, и мы строим на Linux.
вы можете взглянуть на: http://ulibgcj.sourceforge.net/uswt.html Он имеет библиотеку micro-swt, которая упрощает создание графического интерфейса с помощью SWT и посмотрите на затмение документация застройщика
Install4j является отличным инструментом для этого перегиба цели.Также вы можете проверить JSmooth или launch4j-все, хотя я пытался связать jres с JSmooth и не смог..
Я нашел Engima Projector x86 / x64 лучше, чем BoxedApp Packer
Если вы получаете мягкий miminizejre по packr, чем скопировать приложение myapp.jar в launcher\jre\bin\
и копировать из установленного примера jre C:\Program файлы\Files\Java\1.8.0_xxx\bin\javaw.exe для запуска\jre\bin\
откройте вход Engima Protector - > javaw.exe из launcher\jre\bin\
и идут варианты если вы хотите высокое обжатие и Найти разное - > Командная строка " - jar приложение myapp.банку"
и нажмите кнопку защитить и ждать целых DLL и jar в exe
убедитесь, что ваш myapp.jar должен генерировать Eclipse с помощью "Package required libraries into generated JAR", потому что вы не волнуетесь, если вы импортировали много библиотек, например lwjgl или JavaFX, чем вы должны проверить, встроен ли javaw_protected.EXE-файл включает в себя важные файлы примеров активов.
но BoxedApp Packer такой же слишком BoxedApp Packer немного больше, чем Engima Protector. Протектор-это почти лучшее небольшое вложение javaw.exe с активами / ресурсами. Чем они не могут взломать файлы jar... Я надеюсь, что вы довольны собственной jar в exe как менее 4 мб без каталога lib - если у вас есть проблемы с jvm.сообщение об ошибке cfg это означает, что вы не копируете встроенный exe в корневой каталог jre или jdk
пожалуйста, убедитесь, что встроенный exe находится здесь за пределами корневого каталога jre или jdk.
Я надеюсь, что у вас нет проблем, если вы используете протектор x86, чем это нужно использовать i586, Протектор 64-разрядных JRE для 64-разрядных
Если вы используете Protector x64 с jre x86 / i386 - это нормально без проблем. Он отлично работает.
с наилучшими пожеланиями
/ / EDIT:
обновленная новая версия EXCELSIOR JET + VIRTUAL BOX или PROTECTOR-это почти лучшие "встроенные приложения"
Проверьте youtube:https://www.youtube.com/watch?v=ctbIxq-1MGE
Comments