Как перехватить UnsatisifiedLinkError при использовании библиотеки NDK в приложении для Android? - PullRequest
6 голосов
/ 28 июля 2010

У меня есть проект Android, который содержит класс, который использует JNI для получения значения из функции C.Функция C была встроена в библиотеку с использованием NDK.Значение, возвращаемое функцией C, в свою очередь используется для инициализации переменной внутри класса при ее первой загрузке.Это отлично работает.Однако я также хочу, чтобы это работало, когда библиотека отсутствует, предоставляя значение по умолчанию.Поэтому я использую что-то вроде этого:

static native String getstring();

static {
        try {
                System.loadLibrary("library");
                NAME = getstring();
        }
        catch (Exception e) {
                NAME = "Default";
        }
}

Несмотря на улов, я все еще получаю UnsatisfiedLinkError, когда пытаюсь запустить этот код с отсутствующей библиотекой.Почему я не ловлю исключение?Что я делаю не так?

1 Ответ

10 голосов
/ 28 июля 2010

UnsatisfiedLinkError не является подклассом Exception. Иерархия UnsatisfiedLinkError:

Throwable->Error->UnsatisfiedLinkError

Вам лучше поймать UnsatisfiedLinkError, если вы хотите с этим справиться.

...