Если у меня есть исходный файл Java (* .java) или файл класса (* .class), как я могу преобразовать его в файл .exe?
Еще мне нужен установщик для моей программы.
Будет ли .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
По состоянию на 2021 год GraalVM представляет собой интересный способ компиляции Java в собственный код и официально поддерживается Oracle.




IMHO JSmooth, кажется, неплохо справляется.
UPDATE: GCJ is dead. It was officially removed from the GCC project in 2016. Even before that, it was practically abandoned for seven years, and in any case it was never sufficiently complete to serve as a viable alternative Java implementation.
Go find another Java AOT compiler.
GCJ: компилятор GNU для Java может компилировать исходный код Java в собственный машинный код, включая исполняемые файлы Windows.
Хотя не все в Java поддерживается GCJ, особенно компоненты графического интерфейса (см. Какие API Java поддерживаются? Насколько полная поддержка? вопрос от Часто задаваемые вопросы). Я нечасто использовал GCJ, но из ограниченного тестирования, которое я провел с консольными приложениями, все в порядке.
Одним из недостатков использования GCJ для создания автономного исполняемого файла является то, что размер результирующего EXE может быть довольно большим. Однажды я скомпилировал простое консольное приложение в GCJ, и в результате получился исполняемый файл размером около 1 МБ. (Могут быть способы обойти это, о которых я не знаю. Другой вариант - исполняемые программы сжатия.)
Что касается установщиков с открытым исходным кодом, Система установки Nullsoft Scriptable - это установщик с поддержкой сценариев. Если вам интересно, есть примеры, добавленные пользователями о том, как определить наличие JRE и установить ее автоматически, если необходимая JRE не установлена. (Чтобы вы знали, я раньше не использовал NSIS.)
Для получения дополнительной информации об использовании NSIS для установки приложений Java, пожалуйста, взгляните на мой ответ на вопрос "Как лучше всего распространять приложения Java?"
Как я вижу, проект фактически мертв. На главной странице новостей нет
Разработка GNU Java в значительной степени перешла на OpenJDK, поскольку источники, не относящиеся к Oracle, не могли получить доступ к TCK для проверки.
The Java Packager tool compiles, packages, and prepares Java and JavaFX applications for distribution. The javapackager command is the command-line version.
– Oracle's documentation
Утилита javapackager поставляется с JDK. Помимо прочего, он может генерировать файлы .exe с флагом -native exe.
WinRun4j is a java launcher for windows. It is an alternative to javaw.exe and provides the following benefits:
- Uses an INI file for specifying classpath, main class, vm args, program args.
- Custom executable name that appears in task manager.
- Additional JVM args for more flexible memory use.
- Built-in icon replacer for custom icon.
- [more bullet points follow]
– WinRun4J's webpage
WinRun4J - это утилита с открытым исходным кодом. Он имеет функции много.
Packages your JAR, assets and a JVM for distribution on Windows, Linux and Mac OS X, adding a native executable file to make it appear like a native app. Packr is most suitable for GUI applications.
– packr README
packr - еще один инструмент с открытым исходным кодом.
JSmooth is a Java Executable Wrapper. It creates native Windows launchers (standard .exe) for your java applications. It makes java deployment much smoother and user-friendly, as it is able to find any installed Java VM by itself.
– JSmooth's website
JSmooth является открытым исходным кодом и имеет функции, но он очень старый. Последний выпуск был в 2007 году.
JexePack is a command line tool (great for automated scripting) that allows you to package your Java application (class files), optionally along with its resources (like GIF/JPG/TXT/etc), into a single compressed 32-bit Windows EXE, which runs using Sun's Java Runtime Environment. Both console and windowed applications are supported.
– JexePack's website
JexePack - это пробная версия. Для производственного использования требуется оплата, а в exe-файлах, созданных с помощью этого инструмента, будут отображаться «напоминания» без оплаты. Также последний выпуск был в 2013 году.
InstallAnywhere makes it easy for developers to create professional installation software for any platform. With InstallAnywhere, you’ll adapt to industry changes quickly, get to market faster and deliver an engaging customer experience. And know the vulnerability of your project’s OSS components before you ship.
– InstallAnywhere's website
InstallAnywhere - это коммерческий / корпоративный пакет, который генерирует установщики для программ на основе Java. Вероятно, он способен создавать файлы .exe.
В качестве альтернативы файлам .exe вы можете создать файл JAR, который автоматически запускается при двойном щелчке по добавление точки входа в манифест JAR.
Отличным источником информации по этой теме является статья Excelsior «Преобразование Java в EXE - почему, когда, когда нет и как».
См. Также сопутствующую статью «Лучшие инструменты преобразования JAR в EXE, бесплатные и коммерческие».
Лучше использовать eclipse и Jsmooth. Выполните следующие шаги regilanj.wordpress.com/2017/11/19/…
Сработает ли что-нибудь из этого в моей ситуации? stackoverflow.com/questions/56674075/…
Попробуйте это: javaexe.free.fr/html/en/JavaExe.html
Launch4j is a cross-platform tool for wrapping Java applications distributed as jars in lightweight Windows native executables. The executable can be configured to search for a certain JRE version or use a bundled one, and it's possible to set runtime options, like the initial/max heap size. The wrapper also provides better user experience through an application icon, a native pre-JRE splash screen, a custom process name, and a Java download page in case the appropriate JRE cannot be found.
– Launch4j's website
Мы используем Установить4J для создания установщиков для сред Windows или Unix.
Его легко настроить до такой степени, что вы захотите написать сценарии для специальных действий, которые невозможно выполнить с помощью стандартных диалогов. Но даже несмотря на то, что мы настраиваем с его помощью службы Windows, мы используем только стандартные компоненты.
Я думаю, что Launch4J от той же компании (только лаунчер - без установщика).
PS: к сожалению, мне не платят за это одобрение. Мне просто нравится этот инструмент.
Последняя версия Запуск Java Web была улучшена, чтобы обеспечить хорошую автономную работу, а также разрешить "локальную установку". На это стоит посмотреть.
РЕДАКТИРОВАТЬ 2018: Java Web Start больше не входит в комплект новейших JDK. Вместо этого Oracle продвигает модель «локально развернуть приложение с помощью закрытой JRE».
Судя по всему, безопасность JWS была усилена настолько, что для запуска требуется гораздо больше усилий, чем раньше. Тем не менее, это может быть полезно для установщиков.
Если вам нужно преобразовать все ваше приложение в собственный код, то есть EXE плюс библиотеки DLL, существует ExcelsiorJET. Я обнаружил, что он работает хорошо, и предоставил альтернативу объединению JRE.
Обновлено: это было опубликовано в 2010 году - продукт больше не доступен.
Хотя действительно дорого.
Действительно снято с производства.
В качестве альтернативы вы можете использовать какой-нибудь переводчик java-to-c (например, JCGO) и скомпилировать сгенерированные файлы C в собственный двоичный файл (.exe) для целевой платформы.
Я очень скептически отношусь к эффективности этого метода. Я должен был увидеть это, чтобы поверить в это (подумайте о том факте, что большая часть кода Java - это вызовы API к JRE, а всего этого нет на C, не говоря уже о различиях в том, как работает язык).
Меня можно простить за то, что я против преобразования java-программы в .exe-приложение, и у меня есть свои причины. Основным из них является то, что Java-программа может быть скомпилирована в файл jar из многих IDE. Когда программа находится в формате .jar, она может работать на нескольких платформах, в отличие от .exe, который будет работать только в очень ограниченной среде. Я за идею, что программы Java нельзя преобразовывать в Exe, если это не очень необходимо. Всегда можно записать файлы .bat, которые запускают программу Java, пока это файл jar.
если действительно необходимо преобразовать его в exe, конвертер Jar2Exe сделает это незаметно, и можно также присоединить библиотеки, которые скомпилированы вместе с основным приложением.
Дело в том, что сила java - это портативность, но многим людям просто нужен простой windows exe. Лично мне нравится концепция java ... но я хотел бы распространять что-то, что могут запускать мои пользователи, без необходимости загружать JRE.
Я бы сказал, что launch4j - лучший инструмент для преобразования исходного кода Java (.java) в файл .exe. Вы даже можете связать с ним jre для распространения, а exe можно даже обозначить иконками. Хотя размер приложения увеличивается, он гарантирует, что приложение будет работать безупречно, даже если у пользователя не установлен jre. Это также гарантирует, что вы можете предоставить конкретный jre, необходимый для вашего приложения, без необходимости устанавливать его отдельно пользователю. Но, к сожалению, java теряет свое значение. Его многоплатформенная поддержка полностью игнорируется, и последняя версия приложения поддерживается только для Windows. Но это не имеет большого значения, если вы обслуживаете только пользователей Windows.
Вы можете использовать Джанель. Последний работает как средство запуска приложений или средство запуска служб (доступно с 4.x).
Вы можете создать командный файл со следующим кодом:
start javaw -jar JarFile.jar
и конвертируйте .bat в .exe, используя любой конвертер .bat в .exe.
Хорошая оболочка либо предоставляет JRE, либо устанавливает ее, если необходимо, и обрабатывает ситуации с ошибками.
Проекты Java экспортируются как исполняемые файлы Jar. Когда вы хотите создать файл .exe для java-проекта, вы можете «преобразовать» JAR в EXE (отмечу, что я поставил между кавычками convert, потому что это не совсем так).
Из intelij вы сможете сгенерировать только банку
Попробуйте выполнить следующий пример: https://www.genuinecoder.com/convert-java-jar-to-exe/
простой прием для апплетов: напишите код C с main и вызовом функции "system", такой как system ("appletviewer java_src_file");