Почему приложение 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.