2010-07-27 9 views
6

Ich habe ein Android-Projekt, das eine Klasse enthält, die JNI verwendet, um einen Wert aus einer C-Funktion zu ziehen. Die C-Funktion wurde mit NDK in eine Bibliothek eingebaut. Der von der C-Funktion zurückgegebene Wert wird wiederum verwendet, um eine Variable innerhalb einer Klasse zu initialisieren, wenn sie zum ersten Mal geladen wird. Das funktioniert gut. Ich will aber auch, dass es funktioniert, wenn die Bibliothek fehlt, indem ich einen Standardwert bereitstelle. Also so etwas wie Im mit:Wie erhalte ich UnbefristeteLinkError, wenn ich eine NDK-Bibliothek in einer Android-App verwende?

static native String getstring(); 

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

Trotz des Fanges, Im immer noch ein UnsatisfiedLinkError bekommen, wenn ich versuche, diesen Code zu laufen mit der Bibliothek fehlt. Warum erhalte ich die Ausnahme nicht? Was mache ich falsch?

Antwort

10

UnsatisfiedLinkError ist keine Unterklasse von Exception. Die Hierarchie der UnsatisfiedLinkError ist:

Throwable->Error->UnsatisfiedLinkError 

Sie besser fangen UnsatisfiedLinkError, wenn Sie es handhaben wollen.

+0

Ah, das macht Sinn. Das Abfangen dieses spezifischen Fehlers und das Setzen eines Standardwertes funktioniert einwandfrei. Vielen Dank! – Eno

Verwandte Themen