Как создать исполняемую программу на Java?

Я запрограммировал Java-программу в JCreator, все готово, но я хочу создать из нее исполняемый файл, т.е. я не хочу запускать программу, загружая java-классы и компилируя их, а затем выполняя, а вместо этого использую как автономный исполняемый файл.

Какой самый быстрый способ сделать это?


person Community    schedule 29.04.2009    source источник
comment
На Stawoverflow есть много сообщений об этом. stackoverflow.com/ questions / 80105 /   -  person Michael B.    schedule 30.04.2009


Ответы (11)


Вы можете использовать инструмент jar в комплекте с SDK и создайте исполняемую версию программы.

Вот как это делается.

Я публикую результаты из командной строки, потому что это проще, но то же самое должно применяться при использовании JCreator.

Сначала создайте свою программу:

$cat HelloWorldSwing.java
    package start;

    import javax.swing.*;

    public class HelloWorldSwing {
        public static void main(String[] args) {
            //Create and set up the window.
            JFrame frame = new JFrame("HelloWorldSwing");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            JLabel label = new JLabel("Hello World");
            frame.add(label);

            //Display the window.
            frame.pack();
            frame.setVisible(true);
        }
    }
    class Dummy {
        // just to have another thing to pack in the jar
    }

Очень просто, просто отображает окно с надписью «Hello World»

Затем скомпилируйте его:

$javac -d . HelloWorldSwing.java

Два файла были созданы внутри «начальной» папки Dummy.class и HelloWorldSwing.class.

$ls start/
Dummy.class     HelloWorldSwing.class

Следующим шагом создайте файл jar. Каждый файл jar имеет файл манифеста, в котором содержатся атрибуты, относящиеся к исполняемому файлу.

Это содержимое моего файла манифеста.

$cat manifest.mf
Main-class: start.HelloWorldSwing

Просто опишите, что это за основной класс (тот, у которого есть общедоступный статический метод void main)

Как только манифест будет готов, вызывается исполняемый файл jar.

У него много опций, здесь я использую -c -m -f (-c для создания jar, -m для указания файла манифеста, -f = файл должен иметь имя ..) и папку, которую я хочу jar.

$jar -cmf manifest.mf hello.jar start

Это создает файл .jar в системе.

введите описание изображения здесь

Позже вы можете просто дважды щелкнуть этот файл, и он будет работать должным образом.

введите описание изображения здесь

Чтобы создать файл .jar в JCreator, вам просто нужно использовать меню «Инструменты», создать jar, но я не уверен, как туда попадает манифест.

Вот видео, которое я нашел: Создание файла Jar в Jcreator.

Я думаю, вы можете перейти к другим ссылкам, размещенным в этой теме, как только вы познакомитесь с подходом ".jar".

Вы также можете использовать jnlp (протокол Java Network Launcher).

person OscarRyz    schedule 30.04.2009
comment
@IlmariKaronen Обновлено! - person OscarRyz; 29.07.2015
comment
Файл jar на самом деле не является автономным исполняемым файлом. Если вы дважды щелкните файл jar и программа запустится, она откроет файл jar в исполняемом файле java. - person barlop; 17.01.2019

Если вы используете Eclipse, вы можете попробовать следующие 7 шагов, чтобы получить файл .exe для Windows.

step1step2 step3

Теперь у вас есть файл JAR. Для выполнения используйте java -jar path / jarname.jar.

введите описание изображения здесь


Если вы хотите преобразовать его в .exe, вы можете попробовать http://sourceforge.net/projects/launch4j/files/launch4j-3/

STEP5ШАГ6

ШАГ 7. Дайте файлу .xml соответствующее имя и нажмите «Сохранить». Файл .xml стандартный, не беспокойтесь об этом. Ваш исполняемый файл будет создан!

person JaskeyLam    schedule 11.08.2014
comment
Как Linux и MacOS обрабатывают исполняемые файлы? Будет ли работать двойной щелчок по файлу jar в любой из ОС? - person android developer; 26.03.2016
comment
@androiddeveloper Пока для операционной системы существует Java-среда, она будет работать так же. - person Reporter; 12.01.2017

Я не совсем понимаю, что вы имеете в виду.

Но я предполагаю, что вы имеете в виду одно из двух.

  • Вы хотите создать исполняемый файл .jar

Eclipse может сделать это очень легко. Файл -> Экспорт и создание jar-файла, затем выберите соответствующий Main-Class, и он сгенерирует для вас .jar. В Windows вам может потребоваться связать .jar со средой выполнения java. aka Удерживая Shift, щелкните правой кнопкой мыши "открыть с помощью", перейдите к своему jvm и свяжите его с javaw.exe

  • создайте фактический файл .exe, тогда вам нужно использовать дополнительную библиотеку, например

http://jsmooth.sourceforge.net/ или http://launch4j.sourceforge.net/ создаст собственную заглушку .exe с красивым значком, который, по сути, загрузит ваше приложение. Они даже выясняют, не установлена ​​ли у вашего клиента JVM, и предлагают вам ее установить.

person danswain    schedule 29.04.2009

В командной строке перейдите в корневой каталог файлов Java, которые вы хотите сделать исполняемым.

Используйте эту команду:

jar -cvf [name of jar file] [name of directory with Java files]

Это создаст каталог под названием META-INF в архиве jar. В этом META-INF есть файл с именем MANIFEST.MF, откройте этот файл в текстовом редакторе и добавьте следующую строку:

Main-Class: [fully qualified name of your main class]

затем используйте эту команду:

java -jar [name of jar file]

и ваша программа запустится :)

person ForYourOwnGood    schedule 29.04.2009

Взгляните на WinRun4J. Это только окна, но это потому, что в unix есть исполняемые скрипты, которые выглядят (для пользователя) как корзины. Вы также можете легко изменить WinRun4J для компиляции в unix.

Для этого требуется файл конфигурации, но, опять же, перекомпилируйте его с жестко запрограммированными параметрами, и он будет работать как exe без конфигурации.

person KitsuneYMG    schedule 29.04.2009

Jexecutable может создавать Windows exe для программ Java. Он встраивает jar-файлы в exe-файл, и вы можете запускать его как программу Windows.

person Joe    schedule 06.08.2012

Вы можете использовать GCJ для скомпилируйте вашу программу Java в машинный код.
В какой-то момент они даже скомпилировали Eclipse в собственную версию.

person lothar    schedule 29.04.2009

Взгляните на launch4j

person Maurice Perry    schedule 29.04.2009

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

java YourClass

Предполагается, что вы уже скомпилировали свои файлы .java и что java может найти ваши файлы .class. Если java не может найти ваши файлы .class, вы можете использовать параметр -classpath или установить переменную среды CLASSPATH.

person allyourcode    schedule 29.04.2009

Java Web Start - хорошая технология для установки полнофункциональных клиентов Java из Интернета прямо на рабочий стол конечного пользователя (будь то ОС Windows, Mac или * nix). Он поставляется с интеграцией с рабочим столом и автоматическими обновлениями, а также многими другими полезностями.

Для получения дополнительной информации о JWS см. страницу информации о JWS.

person Andrew Thompson    schedule 05.03.2011
comment
К вашему сведению, Java Web Start и JNLP устарели в Java 9 и планируется удалить. См. Этот список устаревших функций от Oracle со ссылкой на кому: JDK-8184998 (not public): Технологии развертывания Java устарели и будут удалены в следующем выпуске. Функциональность Java-апплета и WebStart, включая API-интерфейс апплета, подключаемый модуль Java, средство просмотра Java-апплетов, JNLP и Java Web Start, включая инструмент javaws, устарели в JDK 9 и будут удалены в следующем выпуске. - person Basil Bourque; 04.11.2017

Как предлагалось ранее, вы можете посмотреть launch4j, чтобы создать исполняемый файл для вашего JAR-файла. Кроме того, есть что-то под названием «JExePack», которое может помещать оболочку .exe вокруг вашего jar-файла, чтобы вы могли его распространять (примечание: клиенту в любом случае потребуется JRE для запуска программы на его компьютере) Exes, созданные с помощью GCJ, не будут есть эта зависимость, но процесс немного сложнее.

person Vini    schedule 29.04.2009