2010-07-27 7 views
6

Mam projekt Androida, który zawiera klasę, która używa JNI do pobrania wartości z funkcji C. Funkcja C została wbudowana w bibliotekę przy użyciu NDK. Wartość zwrócona z funkcji C jest z kolei używana do zainicjowania zmiennej wewnątrz klasy po jej pierwszym załadowaniu. To działa dobrze. Jednak chcę również, aby działał, gdy brakuje biblioteki, podając wartość domyślną. Tak Im przy mniej więcej tak:Jak złapać UnsatisifiedLinkError podczas korzystania z biblioteki zbudowanej na NDK w aplikacji na Androida?

static native String getstring(); 

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

Pomimo połowu, Im wciąż coraz UnsatisfiedLinkError gdy próbuję uruchomić ten kod z biblioteką brakuje. Dlaczego nie łapię wyjątku? Co ja robię źle?

Odpowiedz

10

UnsatisfiedLinkError nie jest podklasą Exception. Hierarchia UnsatisfiedLinkError jest:

Throwable->Error->UnsatisfiedLinkError 

lepiej złapać UnsatisfiedLinkError jeśli chcesz go obsługiwać.

+0

Ach, to ma sens. Złapanie tego konkretnego błędu i ustawienie domyślnej wartości działa doskonale. Dzięki! – Eno

Powiązane problemy