Как я могу преобразовать мою программу Java в файл .exe? [закрыто]

500

Если у меня есть исходный файл Java (* .java) или файл класса (* .class), как я могу преобразовать его в файл .exe?

Мне также нужен установщик для моей программы.

Waseem
источник
1
простой взлом для апплетов: написать код на C с main и вызовом функции system как system («appletviewer java_src_file»);
Madhusoodan P
1
Будет ли .exe работать в системе Windows без JRE?
Арпит Агарвал
Просто чтобы завершить (не пробовал сам, потому что нам нужна exe-оболочка, а не установщик): Пакеты установщика также можно создавать с помощью javapackager (см. Docs.oracle.com/javase/8/docs/technotes/guides/deploy/… ) , Чтобы создать установщик EXE или MSI, дополнительно необходимо загрузить и установить Inno Setup или WiX.
НАРЭ
Может быть, NSIS также помогает; nsis.sourceforge.net/Java_Launcher
baris.aydinoz

Ответы:

324

javapackager

Инструмент Java Packager компилирует, упаковывает и подготавливает приложения Java и JavaFX для распространения. Команда javapackager является версией командной строки.

- документация Oracle

В javapackagerутилите поставляется с JDK. Он может генерировать .exe файлы с -native exeфлагом, среди прочего.

WinRun4J

WinRun4j - это Java-пусковая установка для Windows. Это альтернатива javaw.exe и предоставляет следующие преимущества:

  • Использует INI-файл для указания classpath, main class, vm args, args программы.
  • Пользовательское имя исполняемого файла, которое появляется в диспетчере задач.
  • Дополнительные аргументы JVM для более гибкого использования памяти.
  • Встроенный заменитель иконок для пользовательских значков.
  • [больше пунктов следа пули следуют]

- веб-страница WinRun4J

WinRun4J - это утилита с открытым исходным кодом. У этого есть много особенностей.

packr

Упаковывает ваш JAR, ресурсы и JVM для распространения в Windows, Linux и Mac OS X, добавляя собственный исполняемый файл, чтобы он выглядел как собственное приложение. Packr наиболее подходит для приложений с графическим интерфейсом.

- упаковщик README

packr - еще один инструмент с открытым исходным кодом.

JSmooth

JSmooth - это исполняемая оболочка Java. Он создает собственные средства запуска Windows (стандартные .exe) для ваших Java-приложений. Это делает развертывание Java намного более плавным и удобным для пользователя, поскольку оно способно найти любую установленную Java VM самостоятельно.

- сайт JSmooth

JSmooth имеет открытый исходный код и имеет функции, но он очень старый. Последний выпуск был в 2007 году.

JexePack

JexePack - это инструмент командной строки (отлично подходит для автоматизированных сценариев), который позволяет вам упаковать ваше Java-приложение (файлы классов), опционально вместе с его ресурсами (например, GIF / JPG / TXT / и т. Д.), В один сжатый 32-битный Windows EXE , который работает с использованием среды выполнения Java Sun. Поддерживаются как консольные, так и оконные приложения.

- сайт JexePack

JexePack - пробная версия. Для производственного использования требуется оплата, и exe-файлы, созданные с помощью этого инструмента, будут отображать «напоминания» без оплаты. Также последний релиз был в 2013 году.

InstallAnywhere

InstallAnywhere позволяет разработчикам создавать профессиональные программы установки для любой платформы. С InstallAnywhere вы быстро адаптируетесь к изменениям в отрасли, быстрее выходите на рынок и привлекаете клиентов. И узнайте уязвимость компонентов OSS вашего проекта перед отправкой.

- Установить сайт Anywhere

InstallAnywhere - это коммерческий / корпоративный пакет, который генерирует установщики для программ на основе Java. Вероятно, он способен создавать файлы .exe.

Исполняемые файлы JAR

В качестве альтернативы .exe-файлам вы можете создать файл JAR, который автоматически запускается при двойном щелчке, добавляя точку входа в манифест JAR .


За дополнительной информацией

Отличным источником информации по этой теме является статья Excelsior « Преобразование Java в EXE - почему, когда, когда нет и как ».

См. Также сопутствующую статью « Лучшие инструменты преобразования JAR в EXE, бесплатные и коммерческие ».

сойка
источник
Лучше использовать Eclipse и Jsmooth. Выполните следующие действия: regilanj.wordpress.com/2017/11/19/…
Мария Ирудая Регилан J
Подойдет ли что-нибудь из этого для моей ситуации? stackoverflow.com/questions/56674075/…
gunslingor
Попробуйте это: javaexe.free.fr/html/en/JavaExe.html
CamelTM
112

Launch4j

Launch4j - это кроссплатформенный инструмент для упаковки Java-приложений, распространяемых в виде jars, в легкие собственные исполняемые файлы Windows. Исполняемый файл может быть настроен для поиска определенной версии JRE или использования связанной версии, и можно установить параметры времени выполнения, такие как начальный / максимальный размер кучи. Оболочка также обеспечивает лучшее взаимодействие с пользователем благодаря значку приложения, собственному экрану заставки перед JRE, пользовательскому имени процесса и странице загрузки Java в случае, если не удается найти соответствующий JRE.

- Сайт Launch4j

the.duckman
источник
35

ОБНОВЛЕНИЕ: 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? "

coobird
источник
2
Проект на самом деле мертв, как я вижу. На главной странице новостей нет
Владислав Раструсный
Разработка GNU Java в значительной степени перешла на OpenJDK, поскольку источники не из Oracle не смогли получить доступ к TCK для проверки.
Торбьерн Равн Андерсен
25

Вы можете создать командный файл со следующим кодом:

start javaw -jar JarFile.jar

и конвертировать .bat в .exe, используя любой конвертер .bat в .exe.

MultiplyByZer0
источник
2
Хорошая обертка либо приносит JRE, либо устанавливает ее при необходимости и обрабатывает ошибки.
Турбьерн Равн Андерсен
16

Мы используем Install4J для создания установщиков для Windows или Unix.

Его легко настраивать до того момента, когда вы захотите написать сценарии для специальных действий, которые нельзя выполнить стандартными диалогами. Но даже при том, что мы настраиваем службы Windows с этим, мы только используем стандартные компоненты.

  • установщик + лаунчер
  • Windows или Unix
  • написанный на Java
  • муравейник
  • множество настраиваемых стандартных панелей и действий
  • опционально включает или загружает JRE
  • также можно запускать службы Windows
  • несколько языков

Я думаю, что Launch4J от той же компании (просто лаунчер - без инсталлятора).

PS: к сожалению, мне не платят за это одобрение. Мне просто нравится этот инструмент.

стробоскоп
источник
15

Последняя версия Java Web Start была улучшена для обеспечения нормальной работы в автономном режиме, а также для «локальной установки». Это стоит посмотреть.

РЕДАКТИРОВАТЬ 2018: Java Web Start больше не поставляется с новейшими версиями JDK. Вместо этого Oracle стремится к «развертыванию приложения локально с помощью закрытой модели JRE».

Турбьерн Равн Андерсен
источник
Очевидно, JWS настолько сильно ужесточил безопасность, что для его запуска требуется гораздо больше усилий, чем раньше. Это может все еще быть полезным для установщиков, все же.
Торбьерн Равн Андерсен
9

Если вам нужно преобразовать все ваше приложение в нативный код, то есть EXE плюс DLL, есть ExcelsiorJET . Я нашел, что это работает хорошо и предоставил альтернативу объединению JRE.

МДМА
источник
Правда, дорогой.
Мордехай
9

ИМХО JSmooth, кажется, делает довольно хорошую работу.

jussij
источник
6

Я бы сказал, что launch4j - лучший инструмент для преобразования исходного кода java (.java) в файл .exe. Вы даже можете связать его с jre для распространения, а exe-файл можно даже обозначить значком. Хотя размер приложения увеличивается, он гарантирует, что приложение будет работать идеально, даже если у пользователя не установлен jre. Это также гарантирует, что вы сможете предоставить конкретную JRE, необходимую для вашего приложения, без необходимости установки пользователем отдельно. Но, к сожалению, Java теряет свою важность. Его мультиплатформенная поддержка полностью игнорируется, а финальное приложение поддерживается только для Windows. Но это не имеет большого значения, если вы обслуживаете только пользователей Windows.

Пратану Мандал
источник
5

Вы можете использовать Джанель . Последний работает как средство запуска приложений или запуска службы (доступно из 4.x).

L. BIZE
источник
4

В качестве альтернативы, вы можете использовать некоторые трансляторы java-to-c (например, JCGO ) и скомпилировать сгенерированные C-файлы в собственный двоичный (.exe) файл для целевой платформы.

Иван Майданский
источник
2
Я очень недоволен эффективностью этого метода. Я должен увидеть это, чтобы поверить в это (подумайте о том факте, что большая часть кода Java - это вызовы API для JRE, и всего этого нет в C, не говоря уже о различиях в том, как работает язык).
Камило Мартин
3

Я могу быть прощен за то, что был против преобразования Java-программы в приложение .exe, и у меня есть свои причины. Основной из них является то, что Java-программа может быть скомпилирована в JAR-файл из множества IDE. Когда программа имеет формат .jar, она может работать на нескольких платформах, в отличие от .exe, который запускается только в очень ограниченной среде. Я за идею, что Java-программы не должны быть преобразованы в Exe, если в этом нет особой необходимости. Всегда можно написать .bat-файлы, которые запускают Java-программу, пока это jar-файл.

если действительно необходимо преобразовать его в exe, конвертер Jar2Exe делает это молча, и можно также присоединить библиотеки, скомпилированные вместе с основным приложением.

ErrorNotFoundException
источник
Дело в том, что мощь Java заключается в переносимости, но многим людям просто необходимы базовые версии Windows. Лично я люблю концепцию Java ... но хотел бы распространять то, что мои пользователи могли бы запускать, не загружая JRE.
Бальмипур
2

Вы можете конвертировать jar в exe используя jar2exe . Однако вам необходимо приобрести программное обеспечение. Если вам нужно программное обеспечение с открытым исходным кодом, я бы предложил JSmooth .

Raghunandan
источник