Как я могу преобразовать файл JAR в файл EXE? - PullRequest
17 голосов
/ 16 февраля 2010

Я хочу создать файл JAR и хочу запустить его на клиентском компьютере. Итак, у меня есть пара вопросов:

  1. Как я могу преобразовать файл JAR в файл EXE?
  2. Как я могу зашифровать содержимое файла JAR? Файл jar может быть извлечен с помощью WinRAR, а классы могут быть декомпилированы любым декомпилятором Java.
  3. Как я могу создать установщик? У моих клиентов нет никакой JVM, и я не хочу отправлять JDK или JRE, потому что они имеют большой размер.

Ответы [ 8 ]

17 голосов
/ 16 февраля 2010
  1. См. Ссылку: Java to Exe . Это также объясняет, что является вескими причинами для этого, а когда нет.

  2. Вы не можете зашифровать двоичные файлы, так как машина должна их понимать. Тем не менее, оптимизированный исполняемый файл очень сложно декомпилировать, в то время как простые файлы классов просты.

  3. Если у вас есть exe, достаточно установщиков.

9 голосов
/ 16 февраля 2010

JSmooth - это приложение, которое обернет вашу банку в exe

это также позволяет вам проверить, доступна ли правильная версия JRE в системе, которую вы развертываете на

http://jsmooth.sourceforge.net/

4 голосов
/ 16 февраля 2010

Вы не можете предотвратить декомпиляцию. Лучшее, что вы можете сделать, - это сделать это более трудным или более длительным. Однако, как ответ на ваш вопрос, я считаю, что вы можете использовать gcj для компиляции Java в EXE-файлы.

3 голосов
/ 28 октября 2010

1) Я недавно попробовал программу jarToExe и мне нравится. Некоторые функции:

  • бесплатная базовая версия или очень дешевая ($ 30) для «предприятия»
  • возможность иметь в диспетчере задач Windows список вашего приложения вместо java.exe по умолчанию
  • дополнительное запутывание
  • проверка во время выполнения, что java установлен

2) Вы можете сделать сложнее для обратного инжиниринга используя proguard или другой обфускатор

3) nsis - очень мощный, бесплатный язык сценариев для создания установщиков Windows. Хорошая документация на вики сайта и поддержка переполнения стека.

3 голосов
/ 16 февраля 2010

Может быть Excelsior JET удовлетворит ваши потребности.) ИМХО очень зрелый продукт.

3 голосов
/ 16 февраля 2010

Что касается 1): я думаю, вы не можете. Там могут быть инструменты, но вы не можете сделать это с помощью стандартных инструментов, поставляемых с JDK, так как это разрушит независимость платформы. (См. Другие ответы, содержащие ссылки на такие сторонние инструменты)

Что касается 3): используйте InnoSetup для создания установщика. Включите JRE в настройку и дайте InnoSetup установить его на лету.

2 голосов
/ 21 января 2016

Launch4j работал для меня, в то время как некоторые инструменты не работали. Там также есть хороший гид здесь .

Надеюсь, это поможет!

0 голосов
/ 21 июня 2018

Мы используем установочный модуль SFX 7zip. Это простой инструмент с открытым исходным кодом. Он упакует ваш jar, версию jre, поэтому для устанавливающих систем не обязательно устанавливать jre и самораспаковывающуюся версию 7zip. Вот учебник , который объясняет, как связывать и GitHub ссылка Проект не поддерживается, но работает отлично (проверено до Java 1.8)

...