Як я можу конвертувати свою програму Java у файл .exe? [зачинено]


500

Якщо у мене є вихідний файл Java (* .java) або файл класу (* .class), як я можу конвертувати його у файл .exe?

Мені також потрібен інсталятор для моєї програми.


1
простий хак для аплетів: написати код C з main та викликом функціонувати "система", як система ("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.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 для визначення класного шляху, основного класу, аргументів vm, програмних аргументів.
  • Спеціальне ім'я виконавця, яке відображається в диспетчері завдань.
  • Додаткові аргументи JVM для більш гнучкого використання пам'яті.
  • Вбудований замінник значка для спеціальної іконки.
  • [більше кульових точок слідує]

- Веб-сторінка WinRun4J

WinRun4J - це утиліта з відкритим кодом. Він має багато особливостей.

пакувальник

Пакує свій JAR, активи та JVM для розповсюдження в Windows, Linux та Mac OS X, додаючи власний виконуваний файл, щоб він виглядав як рідний додаток. Packr найбільш підходить для програм GUI.

- упаковка ПРОЧИТИ

packr - ще один інструмент з відкритим кодом.

JSmooth

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

- веб-сайт JSmooth

JSmooth є відкритим кодом і має функції, але він дуже старий. Останній реліз був у 2007 році.

JexePack

JexePack - це інструмент командного рядка (відмінно підходить для автоматизованого сценарію), який дозволяє пакувати додаток Java (файли класу), необов'язково разом із його ресурсами (наприклад, GIF / JPG / TXT / тощо) в єдиний стислий 32-бітний Windows EXE , який працює за допомогою Java Sun Runtime Environment Sun. Підтримуються як консольні, так і віконні програми.

- веб-сайт JexePack

JexePack є пробним. Оплата необхідна для виробничого використання, а файли EXE, створені за допомогою цього інструменту, відображатимуть «нагадування» без оплати. Також останній реліз був у 2013 році.

InstallAnywhere

InstallAnywhere спрощує розробників для створення професійного інсталяційного програмного забезпечення для будь-якої платформи. Завдяки InstallAnywhere ви швидко адаптуєтесь до змін у галузі, швидше вийдете на ринок та забезпечите цікавий досвід клієнтів. І знайте вразливість компонентів OSS вашого проекту перед відправкою.

- веб-сайт InstallAnywhere

InstallAnywhere - це комерційний / корпоративний пакет, який створює інсталятори для програм на базі Java. Можливо, він здатний створювати .exe файли.

Виконані файли JAR

Як альтернатива .exe-файлам, ви можете створити файл JAR, який автоматично запускається при двічі клацанні, додаючи в маніфест JAR точку входу .


Для отримання додаткової інформації

Прекрасним джерелом інформації на цю тему є стаття Excelsior " Перетворити Java в EXE - чому, коли, коли немає і як ".

Дивіться також супровідну статтю " Найкращі інструменти перетворення JAR в EXE, безкоштовні та комерційні ".


Краще використовувати затемнення та 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-програм, розподілених у вигляді баночок у легких рідних виконуваних файлах Windows. Виконавчий файл може бути налаштований для пошуку певної версії JRE або використання пакетної версії, а також можна встановити параметри виконання, наприклад початковий / максимальний розмір купи. Обгортка також забезпечує кращу взаємодію з користувачем через піктограму програми, нативну екрану перед вказівкою JRE, спеціальну назву процесу та сторінку завантаження Java у випадку, якщо відповідний JRE не може бути знайдений.

- Веб-сайт Launch4j


35

ОНОВЛЕННЯ: GCJ мертвий. Він був офіційно вилучений з проекту GCC в 2016 році. Ще до цього його практично відмовилися протягом семи років, і в будь-якому випадку він ніколи не був достатньо повним, щоб слугувати життєздатною альтернативною реалізацією Java.

Перейдіть до іншого компілятора Java AOT.

GCJ: Компілятор GNU для Java може компілювати вихідний код Java у власний машинний код, включаючи виконувані файли Windows.

Хоча не все в Java підтримується в GCJ, особливо компоненти графічного інтерфейсу (див. Які підтримуються API Java? Наскільки повною є підтримка? Питання із FAQ ). Я мало використовував GCJ, але з обмеженого тестування, яке я робив із консольними програмами, це здається прекрасним.

Одним із недоліків використання GCJ для створення автономного виконуваного файлу є те, що розмір отриманого EXE може бути досить великим. Одного разу я скомпілював тривіальну консольну програму в GCJ, і результат отримав виконується близько 1 Мб. (Можливо, існують способи, про які я не знаю. Іншим варіантом можуть бути виконувані програми стиснення.)

Що стосується встановлених програм з відкритим кодом, то програма встановлення Nullsoft Scriptable - це сценарій встановлення. Якщо вам цікаво, є приклади , що надаються користувачем, як визначити наявність JRE та встановити його автоматично, якщо потрібний JRE не встановлений. (Просто для того, щоб знати, я раніше не використовував NSIS.)

Для отримання додаткової інформації щодо використання NSIS для встановлення Java-програм, будь ласка, подивіться на мою відповідь на питання " Який найкращий спосіб розповсюдження Java-програм? "


2
Як я бачу, проект насправді мертвий. Немає новин на головній сторінці
Владислав Раструсний

Розробка GNU Java в значній мірі перейшла до OpenJDK, оскільки джерела, що не належать до Oracle, не змогли отримати доступ до TCK для перевірки.
Thorbjørn Ravn Andersen

25

Ви можете зробити пакетний файл із таким кодом:

start javaw -jar JarFile.jar

і перетворити .bat в .exe за допомогою будь-якого перетворювача .bat в .exe.


2
Хороша обгортка або приносить JRE, або встановлює її за потреби та обробляє ситуації з помилками.
Thorbjørn Ravn Andersen

16

Ми використовуємо Install4J для створення інсталяторів для Windows або Unix середовищ.

Це легко настроюється до того моменту, коли ви хочете написати сценарії для спеціальних дій, які неможливо виконати зі стандартними діалогами. Але навіть якщо ми налаштовуємо для нього служби Windows, ми використовуємо лише стандартні компоненти.

  • інсталятор + запуск
  • windows або unix
  • сценарій на Java
  • мурашне завдання
  • безліч налаштованих стандартних панелей та дій
  • необов'язково включає або завантажує JRE
  • також може запускати служби Windows
  • кілька мов

Я думаю, що Launch4J - від тієї самої компанії (тільки пускова установка - інсталятора немає).

PS: На жаль, за це схвалення мені не платять. Мені просто подобається цей інструмент.


15

Найновіший Java Web Start був удосконалений, щоб забезпечити хорошу роботу в автономному режимі, а також дозволяє "локальну установку". Варто розібратися.

EDIT 2018: Java Web Start більше не входить у комплект із новими JDK. Oracle підштовхує до того, щоб "розгортати додаток на локальному рівні із вкладеною моделлю JRE".


Мабуть, JWS настільки посилила безпеку, що для запуску потрібно багато більше зусиль, ніж раніше. Однак це все ще може бути корисним для інсталяторів.
Thorbjørn Ravn Andersen

9

Якщо вам потрібно конвертувати всю вашу програму в нативний код, тобто EXE плюс DLL, існує ExcelsiorJET . Я виявив, що це працює добре і запропонував альтернативу комплектації JRE.


Дійсно дорогий, хоча.
Мордехай


6

Я б сказав, що запуск4j - найкращий інструмент для перетворення вихідного коду Java (.java) у .exe-файл. Ви навіть можете зв’язати jre з ним для розповсюдження, а exe навіть можна ініціювати. Незважаючи на те, що розмір програми збільшується, це гарантує, що програма буде працювати бездоганно, навіть якщо у користувача не встановлено jre. Він також гарантує, що ви можете надати конкретний jre, необхідний для вашої програми, без того, щоб користувач міг встановлювати його окремо. Але, на жаль, java втрачає своє значення. Підтримка мульти платформи повністю ігнорується, а остаточний додаток підтримується лише для Windows. Але це не велика справа, якщо ви обслуговуєте лише користувачів Windows.


5

Можна використовувати Janel . Цей останній працює як програма запуску програм або запуск програми (доступна з 4.x).


4

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


2
Я дуже недовірливий щодо ефективності цього методу. Мені довелося б це повірити (подумайте про те, що більшість Java-кодів є API-дзвінками до JRE, і все те, що немає на C, не має на увазі відмінностей у тому, як мова працює).
Каміло Мартін

3

Мені можна пробачити за те, що я не перетворював програму java в додаток .exe, і в мене є свої причини. Основна з них полягає в тому, що програма java може бути скомпільована до jar-файлу з безлічі IDE. Коли програма знаходиться у форматі .jar, вона може працювати в декількох платформах, на відміну від .exe, яка запускається лише в дуже обмеженому середовищі. Я за ідею, що Java-програми не повинні бути перетворені в Exe, якщо це не потрібно. Завжди можна записати файли .bat, які запускає програму Java, але це файл jar.

якщо це дійсно необхідно перетворити його в exe, конвертер Jar2Exe мовчки робить це, і ви також можете приєднати Бібліотеки, складені разом з Основним додатком.


Річ у тім, що потужність Java - це портативність, але багатьом людям просто потрібна основна програма Windows EXE. Особисто я люблю концепцію Java ... але хотів би поширити те, що мої користувачі могли б запустити, не завантажуючи JRE.
Бальміпур

2

Ви можете конвертувати jar в exe за допомогою jar2exe . Однак вам потрібно придбати програмне забезпечення. Якщо вам потрібне програмне забезпечення з відкритим кодом, я б запропонував JSmooth .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.