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

373
11 февраля 2017, 06:43

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

Answer 1

Нет, не получится.

Вы хорошо подумали?

Есть такие упаковщики, которые в полученный EXE пакуют версию JRE/JVM, в которой и будет запускаться jar.

Например ExcelsiorJET - правда, он коммерческий, но если поискать я думаю есть и бесплатные.

Answer 2

Т.к. 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>
    <path>../jre</path>
    <opt>-DgvSIG.confDir=../cfg</opt>
</jre>

Фишка состоит в том, что путь указывается не к файлу java.exe. Путь к java.exe указывается относительно позиции .exe-файла.

В данном примере, в качестве JRE, используется обычная копия стандартного установленного JRE-движка (например: C:\Program Files\Java\jre1.8.0_121).

И да, Launch4j - бесплатный и с очень демократичной лицензией BSD 3-Clause License.

Answer 3

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

READ ALSO
JsonRPC маппинг

JsonRPC маппинг

Я создал простую JsonRPC server (Netty socketServer) для выполнения определенных задач, общих для нашей команды, но вызывающиеся из разных сетейСервер получает...

397
Лишние символы в html-разметке

Лишние символы в html-разметке

На странице внезапно появились символы `` c разными вариациями, в зависимости от ОС:

304