Извлечение JRE для связывания с приложением - что я могу пропустить? - PullRequest
9 голосов
/ 26 ноября 2010

Я связывал JRE со своим приложением, просто копируя файлы из $JAVA_HOME/jre в дистрибутив моего приложения.Это может противоречить духу Java, но уменьшает потенциальные проблемы, поскольку мое приложение работает на той версии JRE, на которой оно было протестировано (включая битность; я использую некоторые JNI, для которых требуется, чтобы JRE была 32-битной версией).).

Работает нормально, но весь дистрибутив несколько большой, так что, может быть, некоторые ненужные файлы могут быть пропущены?Действительно, $JAVA_HOME/jre/README.txt содержит следующий совет:

Файлы, составляющие среду выполнения Java SE, делятся на две категории: обязательные и необязательные.Необязательные файлы могут быть исключены из перераспределений среды выполнения Java SE по усмотрению поставщика.

В следующем разделе содержится список файлов и каталогов, которые при желании могут быть исключены из перераспределений в среде выполнения Java SE.Все файлы, отсутствующие в этих списках необязательных файлов, должны быть включены в перераспределения среды выполнения.

... При перераспределении JRE в Microsoft Windows в качестве среды выполнения частного приложения (недоступной для других приложений) с пользовательскимlauncher, следующие файлы также необязательны.Это библиотеки и исполняемые файлы, которые используются для поддержки Java в браузерах семейства Internet Explorer и Mozilla;эти файлы не нужны при частном распространении JRE.

Меня удивляет то, что в список необязательных файлов входит, среди прочего:

bin\java.exe
bin\javaw.exe
bin\javaws.exe

Как можно java/javaw.exe быть необязательным? Как мне запустить приложение Java без них?Видимо, я что-то не знаю (скорее всего), или инструкции просто неверны.

Ответы [ 3 ]

2 голосов
/ 26 ноября 2010

При перераспределении JRE в Microsoft Windows в качестве среды выполнения частного приложения (недоступной для других приложений) с пользовательским модулем запуска следующие файлы также необязательны.

Если вы внедряете JVM (связываясь с его общими библиотеками) в собственном приложении, вам не нужны автономные исполняемые файлы программы запуска. Я думаю, что Eclipse работает таким образом, например.

Если ваше приложение использует исполняемый файл java (например, через пакетный файл), тогда они вам нужны.

1 голос
/ 22 декабря 2010

Хотя это не относится строго к вопросу, для оптимизации всей программы (или всей платформы) по удалению «ненужного кода» я нашел ProGuard хорошим инструментом. YMMV.

0 голосов
/ 26 ноября 2010

Как преобразовать его в исполняемый файл с помощью инструмента, подобного launch4j ?Еще несколько предложений вы найдете здесь (не в принятом ответе)

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