Перейти к содержимому

Как сделать exe файл в java

  • автор:

Как сделать exe файл java?

Написал графическую программу на Java, и для нее хочу сделать exe чтобы запустить его на пк без JDK, а просто с установленной java.
Собственно нагуглил такой алгоритм действий:
1. Открываю Project structure — artifacts, создаю новый from models with dependecies, выбираю main класс из предложенных, жму ок, ок. build — build Artifacts и выбираю его.
2. открываю Lauch4j в output file указываю папку для выхода файла, в Jar указываю artifact из idea. В JRE min version пишу 1.4.0. жму шестеренку.
При запуске получившегося в результате ехе файла выдает ошибку: A JNI error has occurred, please check your installation and try again.
Переменные Path приложу скриншотом600b276670def470016794.jpeg
JDK Использую 11 версии
еще один скриншот с джава версией 600b27dc6eafb631474574.png
Собственно вопрос, как решить данную проблему?
И возможно ли вообще перекинуть потом этот ехе файл чтобы он работал на пк без JDK?

  • Вопрос задан более двух лет назад
  • 2356 просмотров

Комментировать

Решения вопроса 1

azerphoenix

Орхан Гасанлы @azerphoenix Куратор тега Java

Java Software Engineer

Здравствуйте!

Собственно вопрос, как решить данную проблему?

И возможно ли вообще перекинуть потом этот ехе файл чтобы он работал на пк без JDK?

Вот, ссылка-ответ на ваш вопрос:
https://eax.me/java-without-jvm/

Ответ написан более двух лет назад

Как сделать exe файл в java

Известно, что из программного кода на Java можно создать исполняемый jar-файл с помощью команды:
jar cf jar-файл входной-файл(ы)
или
jar cmf существующий-манифест jar-файл входной-файл(ы)

jar-файл может исполняться на любом компьютере, под любой операционной системой, лишь бы на этом компьютере при этой операционной системе была установлена JVM (виртуальнапя машина Java).

А можно ли создать exe-файл на основе написанных и откомпилированных файлов программного кода на Java? (Например, под операционную систему Windows? И если можно, то как это сделать?

Пу и Ме сидели на трубе.
Re: Как создать exe-файл из программного кода на Java?

От: Blazkowicz
Дата: 06.09.10 10:52
Оценка:

Здравствуйте, erslgoeirjh, Вы писали:

E>А можно ли создать exe-файл на основе написанных и откомпилированных файлов программного кода на Java? (Например, под операционную систему Windows? И если можно, то как это сделать?
http://rsdn.ru/article/java/QnAJava.xml

Автор(ы): Blazkowicz
Дата: 26.10.2004
ЧаВО по материалам форума
Re: Как создать exe-файл из программного кода на Java?

От: von Zeppelin
Дата: 06.09.10 10:53
Оценка:

Здравствуйте, erslgoeirjh, Вы писали:
E>А можно ли создать exe-файл на основе написанных и откомпилированных файлов программного кода на Java? (Например, под операционную систему Windows? И если можно, то как это сделать?

Можно, используя какой-либо ahead of time compiler, например, Excelsior JET.

Re: Как создать exe-файл из программного кода на Java?

От: Аноним
Дата: 06.09.10 11:30
Оценка:

E>А можно ли создать exe-файл на основе написанных и откомпилированных файлов программного кода на Java? (Например, под операционную систему Windows? И если можно, то как это сделать?

Есть http://gcc.gnu.org/java/ Но он много чего не поддерживает, да и размер выходного файла впоне сравнится с размером Jar + дистрибутив JRE.

jre можно поставлять вместе с программой, предварительно выкинув оттуда ненужные вашей программе jar-ы.

Re[2]: Как создать exe-файл из программного кода на Java?

От: Blazkowicz
Дата: 06.09.10 11:33
Оценка:

Здравствуйте, Аноним, Вы писали:

А>jre можно поставлять вместе с программой, предварительно выкинув оттуда ненужные вашей программе jar-ы.
Выкидывать лишнее из jre, вроде как, запрещено лицензионным соглашением, заисключением пары мелочей. Возможно это будет исправлено с появлением Jigsaw в JDK 7.

Re[3]: Как создать exe-файл из программного кода на Java?

От: Аноним
Дата: 06.09.10 12:19
Оценка: +1

Здравствуйте, Blazkowicz, Вы писали:

B>Здравствуйте, Аноним, Вы писали:

А>>jre можно поставлять вместе с программой, предварительно выкинув оттуда ненужные вашей программе jar-ы.
B>Выкидывать лишнее из jre, вроде как, запрещено лицензионным соглашением, заисключением пары мелочей. Возможно это будет исправлено с появлением Jigsaw в JDK 7.

Ну не обязательно jre от Sun/Oracle брать

Хотя все это ИМХО — изврат. Не вижк проблемы поставлять 17мб jre вместе с программой при сегодняшних скоростях мнтернета и объеме носителей

Re[2]: Как создать exe-файл из программного кода на Java?

От: Аноним
Дата: 06.09.10 15:35
Оценка:

Здравствуйте, Аноним, Вы писали:

А>jre можно поставлять вместе с программой, предварительно выкинув оттуда ненужные вашей программе jar-ы.

Всегда хотел узнать, как узнать какие джары из JRE мне не нужны? Я даже ветку здесь на форуме заводил, никто не смог ответить. А бывает нужно записать скрипт написанный на java на флешку и не хочется лить всю тысячу файлов JRE если проге нужны всего 50-100 файликов

Re[4]: Как создать exe-файл из программного кода на Java?

От: Аноним
Дата: 06.09.10 15:41
Оценка:

Здравствуйте, Аноним, Вы писали:

B>Выкидывать лишнее из jre, вроде как, запрещено лицензионным соглашением, заисключением пары мелочей.

Это если распространять/продавать целую программу, включив в состав JRE. А если я прогаю inhouse скрипты, которые не выйдут за пределы предприятия имхо это соглашение никого не колышет. Другое дело что на предприятии можно на все компы предустановить JRE и не париться, согласен

Re[5]: Как создать exe-файл из программного кода на Java?

От: avpavlov
Дата: 06.09.10 15:48
Оценка:

А>Это если распространять/продавать целую программу, включив в состав JRE. А если я прогаю inhouse скрипты, которые не выйдут за пределы предприятия имхо это соглашение никого не колышет. Другое дело что на предприятии можно на все компы предустановить JRE и не париться, согласен

На предприятии я бы или веб-приложение сделал или веб-старт — будет вам тонкий клиент.

А ЖРЕ наверное можно через АктивДиректори всем принудительно поставить.

Re[3]: Как создать exe-файл из программного кода на Java?

От: Аноним
Дата: 06.09.10 15:56
Оценка:

Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Аноним, Вы писали:

А>>jre можно поставлять вместе с программой, предварительно выкинув оттуда ненужные вашей программе jar-ы.

А>Всегда хотел узнать, как узнать какие джары из JRE мне не нужны? Я даже ветку здесь на форуме заводил, никто не смог ответить. А бывает нужно записать скрипт написанный на java на флешку и не хочется лить всю тысячу файлов JRE если проге нужны всего 50-100 файликов

Под виндой почти все лежит в одном jar-е — rt.jar. Открываешь его и смотришь что там есть. Выкидываешь то, что твое приложение не использует (все достаточно наглядно — содержимое файла соответствует импортам в проекте) если ты что-то лишнее удалишь — получишь ошибку.

Re[4]: Как создать exe-файл из программного кода на Java?

От: Аноним
Дата: 06.09.10 16:56
Оценка:

Здравствуйте, Аноним, Вы писали:

А>Под виндой почти все лежит в одном jar-е — rt.jar. Открываешь его и смотришь что там есть. Выкидываешь то, что твое приложение не использует (все достаточно наглядно — содержимое файла соответствует импортам в проекте) если ты что-то лишнее удалишь — получишь ошибку.

А что делать например с charsets.jar, classes.jsa, mlib_image.dll? Они нужны?

Re[5]: Как создать exe-файл из программного кода на Java?

От: Аноним
Дата: 06.09.10 17:30
Оценка:

Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Аноним, Вы писали:

А>>Под виндой почти все лежит в одном jar-е — rt.jar. Открываешь его и смотришь что там есть. Выкидываешь то, что твое приложение не использует (все достаточно наглядно — содержимое файла соответствует импортам в проекте) если ты что-то лишнее удалишь — получишь ошибку.

А>А что делать например с charsets.jar, classes.jsa, mlib_image.dll? Они нужны?

charsets.jar — там классы работы с кодировками. Наверно, можно что-то выборочно почистить.

mlib_image.dll dll я бы не трогал. Да и занимает она мало.

Re[5]: Как создать exe-файл из программного кода на Java?

От: Аноним
Дата: 06.09.10 17:43
Оценка:

Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Аноним, Вы писали:

А>>Под виндой почти все лежит в одном jar-е — rt.jar. Открываешь его и смотришь что там есть. Выкидываешь то, что твое приложение не использует (все достаточно наглядно — содержимое файла соответствует импортам в проекте) если ты что-то лишнее удалишь — получишь ошибку.

А>А что делать например с charsets.jar, classes.jsa, mlib_image.dll? Они нужны?

Что такое classes.jsa — не знаю. После удаления STS (IDE на базе eclipse) запустился, muCommander — то же. Но мне показалось, что запускалось все дольше и с заметным «тарахтением» HDD.

Re: Как создать exe-файл из программного кода на Java?

От: erslgoeirjh http://russianfellow.livejournal.com
Дата: 07.09.10 04:39
Оценка:

Всем спасибо за ответы!

Но меня интересует такой вопрос—можно ли создать в JBuilder 10 exe-файл под Windows из исходников на Java?
В JBuilder 9 такая возможность есть (сам создавал) — не помню, правда, как это делается.

Создание exe-файла из jar

Пользователям Windows привычнее использовать исполняемое приложение в виде exe-файла, нежели архивного jar-файла. Разработчики настольных java-приложений могут плагином launch4j не только обернуть исполняемый архивный jar-файл в оболочку exe-файла, но и включить в него иконку, автора, версию. Также данный плагин позволяет определить минимальную версию используемой JRE. В данной статье рассмотрим использование maven-плагина launch4j для получения exe-файла.

Описание java-примера

В качестве java-примера используем pluggable решение, включающее несколько jar-файлов. На следующем скриншоте представлена структура нашего экспериментального примера. Три файла, выделенные красным прямоугольником и относящиеся к задаче создания исполняемого exe-файла, рассматриваются ниже.

Несколько слов о структуре примера. Описание с исходными кодами данного java-примера представлено на странице Pluggable решение. Желающие могут поближе познакомиться с технологией динамической загрузки jar-файлов (классов), открыв страницу с подробным описанием исходников. На «выходе» данного примера получаем главный исполняемый модуль plugin-loader.jar, который использует common/plugin-api.jar для загрузки при необходимости (вызове) плагинов plugins/hello1.jar и plugins/hello2.jar.

Графический интерфейс примера, представленный на следующем скриншоте, включает 2 кнопки с надписями ‘Plugin1’ и ‘Plugin2’. При нажатии на одну из кнопок приложение подгружает необходимый плагин, который меняет надпись на кнопке.

Сообщения в консоли

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

Hello world. I am a plugin 1 I am a plugin 2

Изменения в исходных кодах

Необходимо отметить, что в модули PluginLoader.java и Boostrap.java были внесены изменения. Так в PluginLoader.java добавлена метка JLabel с отображением в интерфейсе версии Java :

. . . JLabel label = new JLabel("Java version : " + System.getProperty("java.version")); label.setSize(200, 24); frame.getContentPane().add(label); . . .

В класс Boostrap.java внесены изменения, связанные с чтением классов (*.class) из jar’ника, а не из директории bin, как это представлено в исходных кодах. Если этого не сделать, то придётся с собой ещё «таскать» и директорию bin с class’ами.

Листинг класса Boostrap.java

В главный класс Boostrap внесены изменения определения url : ниже исходной закомментированной строки размещается код определения url в jar-файле.

import java.io.File; import java.lang.reflect.Method; import java.net.URL; import java.net.URLClassLoader; public class Boostrap < public static void main(String[] args) throws Exception < File commonsDir = new File("commons"); File[] entries = commonsDir.listFiles(); URL[] urls = new URL[entries.length]; for (int i = 0; i < entries.length; i++) urls[i] = entries[i].toURI().toURL(); URLClassLoader loader; loader = new URLClassLoader(urls, null); // URL url = new File("bin").toURI().toURL(); File file = new File("."); String path = "jar:file:/" + file.getCanonicalPath(); URL url = new URL(path+"/plugin-loader.jar!/"); URLClassLoader appLoader; appLoader = new URLClassLoader(new URL[],loader); Class appClass = loader.loadClass("PluginLoader"); Object appInstance = appClass.newInstance(); Method m = appClass.getMethod("start"); m.invoke(appInstance); > >

Оборачивание исполняемого jar в exe-файл

Обычно плагин maven.plugins.launch4j включают в проектный pom.xml файл, в котором формируется и исполняемый jar-файл. Поскольку основная цель данной статьи наглядно продемонстрировать возможность оборачивания jar в exe, то уберем из проектного pom.xml все лишнее, что связано с формированием jar-файла. Правильнее сказать создадим такой pom.xml, который и будет решать основную задачу оборачивания jar в exe.

Cледующий листинг проектного файла pom.xml решает данную задачу. Сам pom.xml существенно упростился и стал более наглядным. В разделе определяются наименование компании (product.company) и наименование исполняемого файла (exeFileName), а также минимальная версия jdkVersion. Основные настройки плагина определяются в разделе . В секции указываются jar-файл, exe-файл (outfile) и иконка испольняемого файла (icon). Плагин будет ругаться, если не укажете наименование иконки. Следует отметить, что в секции необходимо указать главный стартуемый java-класс (mainClas).

 4.0.0 com.demo plugin-loader jar 1.0.0 plugin-loader 1.8 1.8 1.8 UTF-8 MultiModule PluginLoader PluginLoader  $   com.akathist.maven.plugins.launch4j launch4j-maven-plugin  plugin-loader package launch4j  gui $.exe $.jar $ favicon.ico Boostrap true anything   $  $ $ Swing application Copyright © 2011 $ $ $ $ $ $ $.exe         

На следующих скриншотах представлены вкладки свойств созданного PluginLoader.exe.

Скачать исходники

Вы можете скачать исходники рассмотренного примера (40.1 Кб), включающего как jar-файлы, так и exe-файл с проектными pom.xml.

Процесс автоматизации сборки данного примера рассмотрен на странице описания Многомодульного maven проекта.

Как в intellije idea сделать исполняемый файл .exe? [закрыт]

Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы он был сосредоточен только на одной проблеме.

Закрыт 4 года назад .

Все перепробовал, закомпиливается проект в .exe но он не запускается и даже никаких ошибок не выдаёт.

Отслеживать
задан 5 авг 2019 в 17:30
JaroslavKhahyda JaroslavKhahyda
23 1 1 серебряный знак 7 7 бронзовых знаков

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Прямого способа создать исполняемый файл .exe в Java нет, разве что Java FX(но не уверен, встречал в инете что можно), но можно создать файл с расширением .jar который также будет запускатся, а потом с помощью программы Launch4j, которая конвертирует файл .jar в .exe . Но, чтобы запустить файл с расширением .jar , на ПК должна быть установлена jdk. пример На youtube есть видео как делать jar файлы.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *