Если у меня есть исходный файл Java (* .java) или файл класса (* .class), как я могу преобразовать его в файл .exe?
Мне также нужен установщик для моей программы.
Если у меня есть исходный файл Java (* .java) или файл класса (* .class), как я могу преобразовать его в файл .exe?
Мне также нужен установщик для моей программы.
Ответы:
Инструмент Java Packager компилирует, упаковывает и подготавливает приложения Java и JavaFX для распространения. Команда javapackager является версией командной строки.
- документация Oracle
В javapackager
утилите поставляется с JDK. Он может генерировать .exe файлы с -native exe
флагом, среди прочего.
WinRun4j - это Java-пусковая установка для Windows. Это альтернатива javaw.exe и предоставляет следующие преимущества:
- Использует INI-файл для указания classpath, main class, vm args, args программы.
- Пользовательское имя исполняемого файла, которое появляется в диспетчере задач.
- Дополнительные аргументы JVM для более гибкого использования памяти.
- Встроенный заменитель иконок для пользовательских значков.
- [больше пунктов следа пули следуют]
- веб-страница WinRun4J
WinRun4J - это утилита с открытым исходным кодом. У этого есть много особенностей.
Упаковывает ваш JAR, ресурсы и JVM для распространения в Windows, Linux и Mac OS X, добавляя собственный исполняемый файл, чтобы он выглядел как собственное приложение. Packr наиболее подходит для приложений с графическим интерфейсом.
- упаковщик README
packr - еще один инструмент с открытым исходным кодом.
JSmooth - это исполняемая оболочка Java. Он создает собственные средства запуска Windows (стандартные .exe) для ваших Java-приложений. Это делает развертывание Java намного более плавным и удобным для пользователя, поскольку оно способно найти любую установленную Java VM самостоятельно.
- сайт JSmooth
JSmooth имеет открытый исходный код и имеет функции, но он очень старый. Последний выпуск был в 2007 году.
JexePack - это инструмент командной строки (отлично подходит для автоматизированных сценариев), который позволяет вам упаковать ваше Java-приложение (файлы классов), опционально вместе с его ресурсами (например, GIF / JPG / TXT / и т. Д.), В один сжатый 32-битный Windows EXE , который работает с использованием среды выполнения Java Sun. Поддерживаются как консольные, так и оконные приложения.
- сайт JexePack
JexePack - пробная версия. Для производственного использования требуется оплата, и exe-файлы, созданные с помощью этого инструмента, будут отображать «напоминания» без оплаты. Также последний релиз был в 2013 году.
InstallAnywhere позволяет разработчикам создавать профессиональные программы установки для любой платформы. С InstallAnywhere вы быстро адаптируетесь к изменениям в отрасли, быстрее выходите на рынок и привлекаете клиентов. И узнайте уязвимость компонентов OSS вашего проекта перед отправкой.
- Установить сайт Anywhere
InstallAnywhere - это коммерческий / корпоративный пакет, который генерирует установщики для программ на основе Java. Вероятно, он способен создавать файлы .exe.
В качестве альтернативы .exe-файлам вы можете создать файл JAR, который автоматически запускается при двойном щелчке, добавляя точку входа в манифест JAR .
Отличным источником информации по этой теме является статья Excelsior « Преобразование Java в EXE - почему, когда, когда нет и как ».
См. Также сопутствующую статью « Лучшие инструменты преобразования JAR в EXE, бесплатные и коммерческие ».
Launch4j - это кроссплатформенный инструмент для упаковки Java-приложений, распространяемых в виде jars, в легкие собственные исполняемые файлы Windows. Исполняемый файл может быть настроен для поиска определенной версии JRE или использования связанной версии, и можно установить параметры времени выполнения, такие как начальный / максимальный размер кучи. Оболочка также обеспечивает лучшее взаимодействие с пользователем благодаря значку приложения, собственному экрану заставки перед JRE, пользовательскому имени процесса и странице загрузки Java в случае, если не удается найти соответствующий JRE.
- Сайт Launch4j
ОБНОВЛЕНИЕ: GCJ мертв. Он был официально удален из проекта GCC в 2016 году. Даже до этого он был практически заброшен на семь лет, и в любом случае он никогда не был достаточно полным, чтобы служить жизнеспособной альтернативной реализацией Java.
Найдите другой компилятор Java AOT.
GCJ: GNU Compiler for Java может компилировать исходный код Java в машинный код, включая исполняемые файлы Windows.
Хотя не все в Java поддерживается в GCJ, особенно компоненты GUI (см. Какие Java API поддерживаются? Насколько полна поддержка? Вопрос из FAQ ). Я не очень много использовал GCJ, но из-за ограниченного тестирования, которое я проводил с консольными приложениями, все выглядит хорошо.
Недостатком использования GCJ для создания отдельного исполняемого файла является то, что размер получаемого EXE-файла может быть довольно большим. Однажды я скомпилировал тривиальное консольное приложение в GCJ, и в результате получился исполняемый файл размером около 1 МБ. (Могут быть способы обойти это, о которых я не знаю. Другим вариантом могут быть исполняемые программы сжатия.)
С точки зрения установщиков с открытым исходным кодом, Nullsoft Scriptable Install System - это установщик с поддержкой сценариев. Если вам интересно, есть предоставленные пользователями примеры того, как обнаружить наличие JRE и установить его автоматически, если требуемая JRE не установлена. (Просто чтобы вы знали, я не использовал NSIS раньше.)
Для получения дополнительной информации об использовании NSIS для установки приложений Java, пожалуйста, посмотрите на мой ответ на вопрос " Каков наилучший способ распространения приложений Java? "
Вы можете создать командный файл со следующим кодом:
start javaw -jar JarFile.jar
и конвертировать .bat в .exe, используя любой конвертер .bat в .exe.
Мы используем Install4J для создания установщиков для Windows или Unix.
Его легко настраивать до того момента, когда вы захотите написать сценарии для специальных действий, которые нельзя выполнить стандартными диалогами. Но даже при том, что мы настраиваем службы Windows с этим, мы только используем стандартные компоненты.
Я думаю, что Launch4J от той же компании (просто лаунчер - без инсталлятора).
PS: к сожалению, мне не платят за это одобрение. Мне просто нравится этот инструмент.
Последняя версия Java Web Start была улучшена для обеспечения нормальной работы в автономном режиме, а также для «локальной установки». Это стоит посмотреть.
РЕДАКТИРОВАТЬ 2018: Java Web Start больше не поставляется с новейшими версиями JDK. Вместо этого Oracle стремится к «развертыванию приложения локально с помощью закрытой модели JRE».
Если вам нужно преобразовать все ваше приложение в нативный код, то есть EXE плюс DLL, есть ExcelsiorJET . Я нашел, что это работает хорошо и предоставил альтернативу объединению JRE.
Я бы сказал, что launch4j - лучший инструмент для преобразования исходного кода java (.java) в файл .exe. Вы даже можете связать его с jre для распространения, а exe-файл можно даже обозначить значком. Хотя размер приложения увеличивается, он гарантирует, что приложение будет работать идеально, даже если у пользователя не установлен jre. Это также гарантирует, что вы сможете предоставить конкретную JRE, необходимую для вашего приложения, без необходимости установки пользователем отдельно. Но, к сожалению, Java теряет свою важность. Его мультиплатформенная поддержка полностью игнорируется, а финальное приложение поддерживается только для Windows. Но это не имеет большого значения, если вы обслуживаете только пользователей Windows.
В качестве альтернативы, вы можете использовать некоторые трансляторы java-to-c (например, JCGO ) и скомпилировать сгенерированные C-файлы в собственный двоичный (.exe) файл для целевой платформы.
Я могу быть прощен за то, что был против преобразования Java-программы в приложение .exe, и у меня есть свои причины. Основной из них является то, что Java-программа может быть скомпилирована в JAR-файл из множества IDE. Когда программа имеет формат .jar, она может работать на нескольких платформах, в отличие от .exe, который запускается только в очень ограниченной среде. Я за идею, что Java-программы не должны быть преобразованы в Exe, если в этом нет особой необходимости. Всегда можно написать .bat-файлы, которые запускают Java-программу, пока это jar-файл.
если действительно необходимо преобразовать его в exe, конвертер Jar2Exe делает это молча, и можно также присоединить библиотеки, скомпилированные вместе с основным приложением.