Я запускаю следующую команду, чтобы создать собственный пакет для файла .jar:
javapackager.exe -deploy -native image -srcfiles <files> -appclass <class> -outdir out -outfile test
При использовании Java 8u171 / 172 папка bundles/AppName/
(содержащая .exe длязапуск приложения Java и некоторые другие материалы) содержит следующие файлы DLL:
api-ms-win-core-console-l1-1-0.dll
api-ms-win-core-datetime-l1-1-0.dll
api-ms-win-core-debug-l1-1-0.dll
api-ms-win-core-errorhandling-l1-1-0.dll
api-ms-win-core-file-l1-1-0.dll
api-ms-win-core-file-l1-2-0.dll
api-ms-win-core-file-l2-1-0.dll
api-ms-win-core-handle-l1-1-0.dll
api-ms-win-core-heap-l1-1-0.dll
api-ms-win-core-interlocked-l1-1-0.dll
api-ms-win-core-libraryloader-l1-1-0.dll
api-ms-win-core-localization-l1-2-0.dll
api-ms-win-core-memory-l1-1-0.dll
api-ms-win-core-namedpipe-l1-1-0.dll
api-ms-win-core-processenvironment-l1-1-0.dll
api-ms-win-core-processthreads-l1-1-0.dll
api-ms-win-core-processthreads-l1-1-1.dll
api-ms-win-core-profile-l1-1-0.dll
api-ms-win-core-rtlsupport-l1-1-0.dll
api-ms-win-core-string-l1-1-0.dll
api-ms-win-core-synch-l1-1-0.dll
api-ms-win-core-synch-l1-2-0.dll
api-ms-win-core-sysinfo-l1-1-0.dll
api-ms-win-core-timezone-l1-1-0.dll
api-ms-win-core-util-l1-1-0.dll
api-ms-win-crt-conio-l1-1-0.dll
api-ms-win-crt-convert-l1-1-0.dll
api-ms-win-crt-environment-l1-1-0.dll
api-ms-win-crt-filesystem-l1-1-0.dll
api-ms-win-crt-heap-l1-1-0.dll
api-ms-win-crt-locale-l1-1-0.dll
api-ms-win-crt-math-l1-1-0.dll
api-ms-win-crt-multibyte-l1-1-0.dll
api-ms-win-crt-private-l1-1-0.dll
api-ms-win-crt-process-l1-1-0.dll
api-ms-win-crt-runtime-l1-1-0.dll
api-ms-win-crt-stdio-l1-1-0.dll
api-ms-win-crt-string-l1-1-0.dll
api-ms-win-crt-time-l1-1-0.dll
api-ms-win-crt-utility-l1-1-0.dll
msvcp140.dll
msvcr100.dll
packager.dll
ucrtbase.dll
vcruntime140.dll
Большинство из них, похоже, также присутствуют в подпапке runtime/bin/
.
В отличие от этого,выполнение той же команды javapackager с Java 8u161 приводит только к включению следующих DLL-файлов (опять же, в дополнение к .exe и прочим):
msvcp140.dll
packager.dll
vcruntime140.dll
Я думаю, что в 8u161 фактически отсутствует msvcr100.dll(в соответствии с этой ошибкой ), но в остальном она кажется более разумной.
Действительно ли мне нужны все эти api-ms-win-*
DLL в папке комплекта?Имейте в виду, что они все еще доступны в папке runtime/bin/
для использования включенной JRE, но почему-то я не могу себе представить, что они необходимы для первоначального выполнения AppName.exe.
Я нашел thisOpenJDK фиксирует , что, кажется, отражает это изменение.Это исправляет упомянутую проблему в 8u161, и добавление api-ms-win-*
DLL кажется преднамеренным.Я все еще не убежден, что все они необходимы, хотя у меня нет веских причин для этого, кроме того, что это кажется странным.Приложение работает нормально без них, но, конечно, я не уверен, что так будет в любой ситуации.