Загрузить библиотеку из банки - PullRequest
9 голосов
/ 06 ноября 2010

как я могу загрузить библиотеку из банки?например,

Test.jar
 +- libAbc.so
 +- libDef.so
 +- ...

Ответы [ 4 ]

8 голосов
/ 07 ноября 2010

Вероятно, не тот ответ, который вы ищете (извлечение файла во временную папку - это ответ, который вы ищете), но я подумал, что поделюсь некоторым реальным опытом:

Сантехника, необходимая для извлечения библиотеки из jar, после чего она должна быть очищена, не конфликтует с другими приложениями, которые могут использовать jar и т. Д., Очень сложная задача.Это можно сделать, но велика вероятность того, что вы получите либо тонны временных копий своих библиотек, загромождающих систему пользователя, либо столкнетесь с конфликтами между несколькими приложениями, использующими библиотеки.

Когда вы добавляете тот факт, что многие операционные системы не позволяют использовать какой-либо файл в качестве библиотеки (и часто разрешения для пользователя, который будет запускать ваше приложение, не позволяют им помечать произвольный файл во временной областипапка для выполнения), идея упаковки собственных библиотек внутри jar становится менее привлекательной.

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

6 голосов
/ 06 ноября 2010

Вы должны распаковать его во временный каталог и использовать `System.load (" путь / к / libAbc.so ").

Это было обсуждалось ранее .

Отредактировано : исправлена ​​ссылка.

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

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

Можете ли вы развернуть свою библиотеку рядом с файлом JAR?

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

Библиотеки должны быть загружены из файловой системы. Таким образом, вы можете извлечь вашу библиотеку из jar во временный каталог и загрузить ее.

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