Как создать EXE-файл в Java - PullRequest
6 голосов
/ 25 июня 2010

Привет, я хочу создать exe-файл для моего Java-приложения.

Я пытался с некоторыми сторонними программами JEXECreator, успешно создал исполняемый файл и он нормально работает в моей системе, когда я пытался с другой машиной, он не работает. Я получил следующую ошибку

    * The error occurred while running the application. The exit code is 0x10000223.
    * Contact the vendor of the application for troubleshooting.

    java.lang.ClassNotFoundException: com.sample.SampleMain
         at java.net.URLClassLoader$1.run(Unknown Source)
         at java.security.AccessController.doPrivileged(Native Method)
         at java.net.URLClassLoader.findClass(Unknown Source)
         at java.lang.ClassLoader.loadClass(Unknown Source)
         at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
         at java.lang.ClassLoader.loadClass(Unknown Source)
         at java.lang.ClassLoader.loadClassInternal(Unknown Source)
         at java.lang.Class.forName0(Native Method)
         at java.lang.Class.forName(Unknown Source)
         at com.ucware.JEXEClassLoader.run(Unknown Source)
         at com.ucware.JEXEClassLoader.main(Unknown Source)
    **************************************

Я знаю, что с указанным мной путем к классу что-то не так.

На самом деле я хочу создать exe-файл самостоятельно, без использования стороннего программного обеспечения.

Я нашел шаги на многих сайтах

Создан файл манифеста с именем Sample.mft со следующим содержимым

         Manifest-Version: 1.0
         Main-Class: 
         Class-path:

В этом у меня есть некоторые сомнения,

  1. Как следует добавить главный класс, с полным именем пакета (com.sample.SampleMain) или только с именем класса (SampleMain) или с расширением (SampleMain.class)

  2. Как следует добавить путь к классам, у меня в проекте 4 класса java и 2 jar. Как добавить все это в путь к классу, и мне нужно добавить java jdk в classpath.

  3. Где файл манифеста должен быть сохранен

  4. Каким должно быть расширение файла манифеста (mf или mft)

  5. В командной строке из какого каталога мне следует создать исполняемый файл (из папки моего проекта, папки src или из папки, содержащей все классы java)

  6. Какой синтаксис следует использовать при создании jar в командной строке

(jar cmf Sample.mf Sample.jar Sample1.class Sample2.class Sample3.class Sample4.class jar1.jar jar2.jar) как этот или (jar cvfm Sample.jar sample.mf * .class)

Когда я сделал что-то подобное, я получаю jar вместо exe-файла. Когда я запускаю jar в командной строке, используя "java -jar sample.jar", я получаю исключение класса не найден ".

На самом деле, как создать exe-файл вместо jar-файла, то есть, просто дважды щелкнув по exe-файлу, нужно запустить мое приложение на любой машине.

Может кто-нибудь помочь мне сделать это?

Заранее спасибо.

Ответы [ 6 ]

3 голосов
/ 25 июня 2010

Я использую инструмент Ant в Eclipse IDE для работы с InnoSetup и Launch4J для создания EXE и его установщика, который также управляет classpath ...

Гид? Вы можете сослаться на:

http://www.eteks.com/tips/tipCreationExe.html (по-французски)

1 голос
/ 25 июня 2010

У меня был некоторый положительный опыт с Excelsior JET .В отличие от gcj, он на самом деле работает, и время выполнения меньше, чем у исполняемого файла .jar.Недостатком является то, что это не бесплатно.

1 голос
/ 25 июня 2010

Лично мне нравится JSmooth . Это просто упаковка. Это означает, что это все еще приложение Java. При выполнении exe-файла он распаковывает jar-файл во временную папку, а затем выполняет его с javaw -jar ...

Второй вариант: gcj . Но это абсолютно плохой выбор. Это не оборачивает банку в исполняемый файл, но на самом деле компилирует его в собственный системный код. Но это замедляет ваше приложение очень сильно. Вы можете проверить некоторые результаты моего времени на этой теме .

1 голос
/ 25 июня 2010

Не могу говорить за JEXECreator, но я могу рекомендовать JSmooth (http://jsmooth.sourceforge.net/). Я успешно использовал его для нескольких проектов (например, это Java-приложение на основе SWT ).

0 голосов
/ 20 апреля 2017

Для создания exe-файла я использую launch4j.Launch4j преобразует файл JAR в EXE-файл, и если я хочу упаковать его для установщика, я использую InnoSetup.Для меня этот exe, созданный launch4j, работает на ПК.

0 голосов
/ 25 июня 2010

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

...