Просто при запуске программы, написанной на Java, на машине, на которой она не установлена — программа, соответственно, работать не будет. Как решаются подобные вопросы?
Отслеживать
задан 12 апр 2015 в 9:03
danilatorsu danilatorsu
135 1 1 золотой знак 1 1 серебряный знак 9 9 бронзовых знаков
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Самые популярное решение Launch4j или exe4j , но это всего лишь Загрузчик приложения на java, то есть jre все равно необходимо.
Отслеживать
ответ дан 12 апр 2015 в 15:53
1,865 1 1 золотой знак 17 17 серебряных знаков 25 25 бронзовых знаков
Можете приобрести Excelsior Jet. А можете собрать приложение с помощью gcj. Но размер вас не порадует. Можно собрать с JVM «в пузе», например с JamaicaVM.
Отслеживать
ответ дан 12 апр 2015 в 15:36
111 1 1 бронзовый знак
Кстати, сейчас можно купить Excelsior JET всего за $50: excelsiorjet.com/charity
13 апр 2015 в 12:30
Установите JRE. иначе никак. преобразование в .exe не спасёт. Ну если очень хочется преобразовать jar -> exe то вот ссылка, но jre — обязательный компонент
Как конвертировать из jar в exe файл
Отслеживать
ответ дан 12 апр 2015 в 9:27
3,385 2 2 золотых знака 19 19 серебряных знаков 42 42 бронзовых знака
То есть приложения, написанные на java без jre вообще нельзя использовать?
26 июн 2019 в 19:26
-
Предстоящие события
заканчиваются через 8 часов
Связанные
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Источник: ru.stackoverflow.com
Конвертируем JAR в исполняемый (.exe) файл
Кратчайшая инструкция. Пишем простейшее тестовое приложение, допустим «Hi Amigo!» в файл HiAmigo.txt 100 раз.
public class Main < public static void main(String[] args) throws IOException < File file = new File(«C:\temp\HiAmigo.txt»); FileWriter fileWriter = new FileWriter(file); for (int i = 0; i < 100 ; i++) < fileWriter.write(«Hi Amigo! n»); >fileWriter.close(); > >
Проверяем что все работает на этом этапе (это важно!) Идем File -> Project Structure -> Artifacts -> + JAR -> From Modules with dependencies..
Указываем путь к нашему Main.class:
Жмем ОК Жмем Build Artifacts — > Action -> Build
Появляется наш артефакт:
Удаляем наш тестовый файл «C:\temp\HiAmigo.txt» и запускаем JAR. Файл должен появиться еще раз.
Как конвертировать из jar в exe файл
Если появился — все ок. Едем дальше. Качаем тулзу с сайта https://launch4j.sourceforge.net/ (Рекомендую версию 3.14, потом объясню почему). Устанавниваем запускаем. Нам нужно два поля. Указываем наш JAR и куда класть готовый .exe
Представьте ситуацию что на машине где мы планируем использовать наше приложение не установлена JRE и нет возможности ее установить. Такое часто бывает по соображениям безопасности. К тому же хорошо бы обеспечить наше приложение более высоким уровнем автономности. Делаем следующее. Создаем отдельный каталог для нашего приложения, пусть OurApp. Внутри создаем папку JRE.
Качаем JRE (в моем примере пусть будет jre-8u361-windows-i586) устанавливаем куда нибудь (если это готовый архив разархивируем) и выдергиваем из нее все файлы. Копируем все в OurAppJRE должно получиться примерно так:


Копируем exe и кладем рядом рядом с папкой JRE
Удаляем тестовый C:tempHiAmigo.txt. Запускаем exe и смотрим как создается новый. Вот и все.
Теперь каталог можно OurApp можно архивировать и передавать куда угодно, exe отработает. Важно: Версия JRE в папке должна быть не ниже той на которой билдился артефакт.
Проверяйте поле: В моем случае возникли проблемы совместимости с x86 платформой и я использовал версию враппера 3.14, так как в ней можно явно указывать тип целевой архитектуры. В общем всем спасибо за внимание. Это была моя первая статья-инструкция, прошу не судить строго. Всем мир!
Источник: javarush.com
Как превратить Java программу в EXE-файл?
Двойной щелчок для запуска — один из самых простых способов открыть программу. Если у человека, которому вы хотите показать свое приложение, уже установлена правильная версия Java, для запуска он может дважды щелкнуть файл jar. Если же у него не установлена Java, то есть способы создать исполняемый установщик, такой как jpackage. После этого для запуска кода нужно лишь нажать на этот установщик. Также можно использовать Native Image, чтобы превратить код в исполняемый файл, который не требует какой-либо дополнительной установки.
В этой статье мы сосредоточимся на довольно простом подходе, который работает для любого приложения, независимо от того, какие зависимости вы включаете или какие функции JVM используете.
Код, о котором сегодня пойдет речь, можно найти в репозитории GitHub, а исполняемые файлы с программой выложены здесь.
Используемый стек
Шаг 1. Скомпилируйте и упакуйте свой код в jar
Эта базовая программа создаст простое окно с текстом, который вы можете менять, нажимая на одну из кнопок в интерфейсе.
Эта базовая программа создаст простое окно с текстом, который вы можете менять, нажимая на одну из кнопок в интерфейсе.
import javax.swing.*;
import java.awt.*;
Сейчас наша цель состоит в том, чтобы упаковать код вместе с его зависимостями в jar. JAR-файлы — это обычные ZIP-архивы с небольшой дополнительной структурой.
Для проекта Maven конфигурация будет выглядеть следующим образом.
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=”http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”>
Здесь плагин “shade” будет обрабатывать включение кода из всех ваших зависимостей в jar. В данном случае единственной внешней зависимостью является org.apache.commons/commons-text.
mvn clean package
Затем мы переместим этот jar-файл в новый каталог target/, где он будет отделен от других файлов.
mkdir build
mv target/javaexe-1.0.jar build
Шаг 2. Создайте среду выполнения Java (Java Runtime Environment, JRE)
Чтобы запустить уже созданный нами jar-файл, нужно связать его со средой выполнения Java. Для этого мы будем использовать jlink.
Поскольку в экосистеме Java не используются модули, то вы, скорее всего, не слышали о них и не использовали jlink.
Короче говоря, jlink может создавать “настраиваемые исполняемые образы”. Например, вы делаете веб-сервер. Вам не нужны AWT или Swing, поэтому включать их в код будет лишним. С помощью jlink вы можете создать JRE, которая вообще не включает модуль java.desktop.
Эта система работает лучше всего, если ваше приложение и все его зависимости включают скомпилированные файлы module-info.java, которые дают jlink точную информацию, какие модули вы хотите включить. Вы также можете вручную определить список необходимых модулей, используя jdeps.
И даже без модульного проекта мы можем эффективно клонировать нашу инсталляцию Java в каталог с помощью jlink.
jlink –add-modules ALL-MODULE-PATH –output build/runtime
Включение каждого модуля по отдельности дает уверенность в том, что такие библиотеки как org.apache.commons/commons-text будут работать именно так, как задумано. Нужно лишь выяснить, какие модули нам требуются.
Шаг 3. Объедините Jar и JRE в исполняемый файл
Имея jar-файл, содержащий код и все его зависимости, а также JRE, остается только объединить их. Для этого нам нужно выполнить следующие действия:
- Заархивируйте каталог, содержащий JRE и jar вашего приложения.
- Прикрепите сценарий-заглушку (stub script) к верхней части этого zip-файла, который извлечет данные во временный каталог и запустит код.
- Для этого существует библиотека JavaScript, которая называется caxa. Ее цель — превращать проекты NodeJS в исполняемые файлы, она также может объединять любые установки NodeJS в системе. К счастью, этот шаг можно пропустить, указав флаг –no-include-node.
npx caxa
–input build
–output application
–no-include-node
— “>/runtime/bin/java” “-jar” “>/javaexe-1.0.jar”
Это создаст исполняемый файл с именем “application”. Если вы создаете его для Windows, то нужно указать “application.exe”. Когда исполняемый файл запускается, > будет заменен на временный каталог, в котором был развернут zip-файл.
Учтите, что при создании исполняемых файлов используются также и такие механизмы, как подпись кода и автоматические обновления. Однако эти вещи требуют более глубокого изучения, которое трудно вместить в одну публикацию.
Источник: zetacraft.ru