Портативная JVM с банкой - PullRequest
1 голос
/ 24 июля 2011

Можно ли упаковать JVM или JRE с файлом JAR, чтобы при условии, что пользователь установил или не установил Java, он всегда будет использовать упакованную JVM.Я предполагаю, что для этого потребуется какая-то программа на языке c / c ++, которая устранит многоплатформенность Java.Это нормально, пока платформа Windows.Также было бы лучше, если бы пользователь не получал приглашение установить JVM, программа просто запускает его, а затем приложение, не запрашивая у пользователя что-либо установить.

Ответы [ 3 ]

2 голосов
/ 24 июля 2011

У меня есть 2 разных подхода:

  1. Используйте (коммерческий) установщик, например, InstallShild
  2. Создайте (исполняемый) ZIP, содержащий ваши JAR и JRE. Вы можете определить команду, которая будет выполнена после того, как пользователь распакует ZIP-файл. Нет необходимости устанавливать JRE в ОС, ваш скрипт запуска (.bat и т. Д.) Должен напрямую указывать на JRE, который вы поставили. Внутри каталога JRE вы можете найти файл, описывающий, как вы можете связать вашу JRE с приложением. Кстати: у вас могут быть разные единицы развертывания для каждой среды (например, 32-битная, 64-битная)
2 голосов
/ 28 апреля 2015

Для суммирования ответа @home на упаковку JRE:

  1. zip-каталог вашей операционной системы jre (например, для Windows: C:\Program Files\Java\jre7)
  2. распакуйте его где-нибудь на конечном компьютере (например, D:\MyProgram\jre7)
  3. возможно изменить переменную окружения PATH (например, set PATH=%PATH%;D:\MyProgram\jre7\bin)

Если вам не разрешено изменять PATH, вы можете просто явно указать D:\MyProgram\jre7\bin\java.exe -jar MyProgram.jar в сценарии запуска.

2 голосов
/ 24 июля 2011

Это нормально, если платформа Windows.

Если все, что вы хотите поддержать, это Windows, что привлекает Java (в отличие, например, от .Net)?

Также было бы лучше, если бы пользователь не получил подсказку для установки JVM, ..

Не согласно этому пользователю. Вы когда-нибудь слышали о UAC? Если мой полностью включенный контроль учетных записей не смог поймать это и запросить у меня сообщение об ошибке с MS.


Oracle предоставляет deployJava.js , чтобы обеспечить установку подходящей минимальной версии JRE перед запуском апплета или предоставлением кнопки запуска для приложений. Вы можете адаптировать 2-ю функцию для прямой связи с исполняемым файлом Jar.

...