Проверка загружаемой библиотеки JNI - PullRequest
0 голосов
/ 17 февраля 2011

У меня есть вопрос. Есть ли способ, с помощью которого я могу проверить, если DLL может быть загружен без фактической загрузки? Моя проблема заключается в следующем:

Я использую сторонний API, который должен загрузить собственную библиотеку. Но странная вещь заключается в том, что, несмотря на то, что она «Библиотека», она вызовет System.exit(), если не сможет загрузить собственную библиотеку. Хотя мое приложение зависит от этой библиотеки, я не хочу, чтобы мое приложение зависало, даже если я не могу использовать библиотеку, которая является только функцией в моем приложении [хотя и важной]. Поэтому, прежде чем использовать библиотеку, я хочу проверить, является ли DLL загружаемым. Я попытался сделать это, проверив, была ли выбита ошибка UnsatisfiedLinkError из оператора System.loadLibrary("LibraryName"). Если возникла ошибка, я не использую эту библиотеку. Однако, если это не выдает никакой ошибки, я использую библиотеку. Теперь после этого я получаю следующую ошибку:

Невозможно создать собственную библиотеку. Библиотека была уже загружен в другой ClassLoader.

Скорее всего, я не могу загрузить библиотеку из метода System.loadLibrary() и сделать это только из сторонней библиотеки. Итак, мой вопрос: «Как я могу проверить, является ли библиотека загружаемой без фактической загрузки?»

1 Ответ

0 голосов
/ 17 февраля 2011

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

...