Почему приложение Java не может загружать двоичные файлы библиотеки из своего собственного.jar?

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

прежде чем вы сможете использовать библиотеки DLL, вам нужно извлечь их из JAR-файла и выгрузить их где-нибудь на жесткий диск, иначе вы не сможете загрузить их

Это утверждение верно? И почему?

2 ответа

Решение

DLL (динамически подключаемые библиотеки) зависят от операционной системы. Операционная система должна иметь возможность непосредственно находить файлы для их загрузки. JAR-файл - это, по сути, zip-файл, и операционная система не ищет внутри DLL-файлов zip/jar-файлы.

Чтобы операционная система могла найти DLL, она должна быть доступна непосредственно в файловой системе, а также в пути к DLL для ОС.

Обратите внимание, что jar - это объекты, специфичные для Java, а Java отличается от операционной системы. В зависимости от конкретной ОС DLL (или.o файла в Linux) вы ограничиваете свою программу для работы в операционных системах, совместимых с библиотекой - даже битность (32-битная или 64-битная) будет иметь значение для DLL.

При этом, если вам нужно включить и использовать библиотеки DLL, то вам понадобится какая-то процедура установки или инструкции, чтобы получить файлы на месте, прежде чем они смогут работать.

Библиотеки динамических ссылок (DLL) являются системно-зависимыми, и их загрузка вызывает определенные операции операционной системы, которые находятся за пределами JVM и ее загрузчиков классов.

Поэтому вы не можете легко загрузить их из файла JAR.

Другие вопросы по тегам