Страницы

Поиск по вопросам

понедельник, 6 января 2020 г.

Исполняемые файлы Java

#jvm #java


Вопрос такой, если создать .jar или .exe исполняемый файл, он запустится на компьютере
на котором нет JVM и не установлены JDK и JRE?
    


Ответы

Ответ 1



Т.к. jar в принципе не может работать без JVM (потому что jar - это набор классов в виде байт-кода, а не в виде исполняемых бинарных файлов), то сформулируем Ваш вопрос так: как в один .exe-файл упаковать свой .jar-проект и JVM. Чтобы Ваш проект мог запускаться и работать без предустановки JVM? На stackoverflow описали успешный эксперимент по скрещиванию launch4j и JVM (т.е. JRE). Делюсь ссылкой: как упаковать свой JAR-проект и JRE в один EXE-файл через launch4j. Перевожу ответ из ссылки: 1.Упаковать свое приложение и JRE в один ZIP-архив со структурой директорий: containerFolder |- jre |-bin (здесь лежит java.exe из состава JRE) |-lib |- cfg (папка для сохранения user-конфигурации, если нужно) |- bin (Ваше приложение с .exe и вашим jar-файлом и другими Вашими внешними файлами из проекта) 2.В xml-файле для launch4j сконфигурировать JRE таким образом: ../jre -DgvSIG.confDir=../cfg Фишка состоит в том, что путь указывается не к файлу java.exe. Путь к java.exe указывается относительно позиции .exe-файла. В данном примере, в качестве JRE, используется обычная копия стандартного установленного JRE-движка (например: C:\Program Files\Java\jre1.8.0_121). И да, Launch4j - бесплатный и с очень демократичной лицензией BSD 3-Clause License.

Ответ 2



Нет, не получится. Вы хорошо подумали? Есть такие упаковщики, которые в полученный EXE пакуют версию JRE/JVM, в которой и будет запускаться jar. Например ExcelsiorJET - правда, он коммерческий, но если поискать я думаю есть и бесплатные.

Ответ 3



Нет, не получится. Есть только одна альтернатива. Некоторые упаковщики в exe, могут привязать его к локальному jvm. То есть вместе с exe придется таскать папку с jre.

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

Отправить комментарий