[jni] loadLibrary Exception abfangen

darkeye2

Bekanntes Mitglied
Hallo,

normalerweise kann man ja Exceptions abfangen, und entsprechend etwas unternehmen, nun nutze ich in einem Programm die System.loadLibrary funktion, um native bibliotheken zu laden, und immer wenn eine Datei nicht vorhanden ist, wird das prog einfach beenedet, und ich sehe den fehler nur in der konsole. Ich hab es schon mit try-catch versucht, klappt leider nicht.

Mein Ziel ist es den fehler abzufangen, und entsprechend in einem fester, das die anwendung öffnet, als status zu zeigen, dass die datei nicht gefunden wurde.
 
I

irgendjemand

Gast
der grund ist das das ein Error ist ...
und laut java-grundlagen soll man nur Exceptions catchen ... Errors nie !
 

darkeye2

Bekanntes Mitglied
achso, danke, das löst natürlich das problem, ... Error und nicht Exception abfangen.

Und in diesem fall macht es sehr wohl sinn, Errors zu catchen, weil das programm ja weiterhin genutzt werden kann, und man aus dem prog heraus die libs neu downloaden kann, aber wenn alles abstürzt, nur weil die bibliothek nicht am richtigen ort ist, ist es nicht sonderlich toll für den anwender
 
I

irgendjemand

Gast
ist dann aber ein zeichen für schlechtes design ...

desshalb find ich meincraft auch nicht so sonderlich super das dem user OutOfMemoryError an den kopf wirfst ...
weil das sind infos die den user eigentlich nicht zu interessieren haben

besser wäre es wenn du vor dem laden der prüfst ob diese überhaupt vorhanden ist und dann ohne exceptions einfach in einem [c]if(file.exists());[/c] zu prüfen ...
 

tfa

Top Contributor
Selbstverständlich werden Errors bzw. alle Throwables letzten Endes aufgefangen und dem Benutzer eine vernünftige Fehlermeldung präsentiert. Alles andere wäre Blödsinn.
 

darkeye2

Bekanntes Mitglied
hmm, wieso ist es besser, wenn ich das vorher so prüfe, über das abfangen der Error hab ich entweder die lib geladen oder eben festgestellt, dass sie nicht vorhanden ist, und der user kriegt keine fehlermeldung, die er nicht versteht, sondern eine normale Nachricht, dass eine native datei nicht gefunden werden konnte, und die frage, ob er diese nun aus dem internet nachladen möchte.
 
I

irgendjemand

Gast
Selbstverständlich werden Errors bzw. alle Throwables letzten Endes aufgefangen und dem Benutzer eine vernünftige Fehlermeldung präsentiert. Alles andere wäre Blödsinn.

ja ... weil am ende die VM alles auffängt *wenn man z.b. alles mit [c]throws Throwable[/c] weiter werfen würde

@TO
du kannst auch über das normale prüfen dem user eine ordentliche fehlermeldung anzeigen ... mit dem unterschied das erst garkein Throwable ausgelöst wird was deutlich besseres design ist
 
G

Guest2

Gast
Moin,

die Bibliothek kann vorhanden sein und trotzdem kann das Laden fehlschlagen.

Den Error abzufangen und vernünftig zu behandeln macht hier imho durchaus Sinn.

Viele Grüße,
Fancy
 

Marco13

Top Contributor
Seh' ich genauso. Man kann nicht so ohne weiteres ein [c]file.exists()[/c] machen, weil man den Dateinamen erstmal nicht kennt - der hängt nämlich vom Betriebssystem ab. Selbst WENN man ihn sich selbst zusammenbaut (geht natürlich) kann man die Datei immernoch nicht aufspüren: Bei loadLibrary werden auch Verzeichnisse berücksichtigt, die im PATH liegen. Und selbst WENN man sich hundetere Codezeilen antun will, bei denen man höchst wackelig-frickelig und Betriebssystemspezifisch irgendwelche File-Objekte aus Properties und Umgebungsvariablen zusammenbaut und durchprobiert, steht man immernoch vor dem Problem, dass im Zweifelsfall ein UnsatisfiedLinkError geworfen wird, wenn die DLL-Version nicht passt (oder aus 1000 anderen Gründen...).

Ich hab' in den LibUtils genau deswegen auch die ansonsten so "böse" Zeile
Java:
catch (Throwable t)

Ja, sieht nach üblen Krämpfen aus. Sind auch üble Krämpfe. Aber wenn jemand eine bessere Lösung hat, würde ich die natürlich gerne einbauen :D
 
I

irgendjemand

Gast
naja ... es gibt schon unterschiede zwischen System.load(filename) und System.loadLibrary(libname) ...
worauf ich anspiele ist eigentlich System.load(filename) bei dem meines erachtens nur drei mögliche ergebnisse gibt

erfolg
fehler weil file nicht gefunden
fehler wegen dll-inkompatibilität

und den einen fehler wegen FileNotFound kann man durch ein exists() prüfen ...
auch kann man durch system-props rausbekommen ob eine x86 oder eine x64 VM verwendet wird und entsprechend die libs bennen ... so entgeht man zumindest dem fehler eine x64 dll in eine x86 vm laden zu wollen *vise-versa*

was System.loadLibrary(libname) angeht : mag zwar etwas bequemer sein da man die suche nach dem file dem OS selbst überlässt ... kann aber schon mal schneller zu fehlern führen wenn sich die lib nicht im path/classpath befindet oder man vergisst den lib-path beim starten entsprechend anzupassen ...
ist daher meines erachtens die schlechtere wahl ... mann sollte bei selbst mitgelieferten dlls System.load(filename) bevorzugen da man dort dierekt den entsprechenden pfad angeben kann *was auch aus einem jar herraus mit [c](new File(".")).getAbsolutePath();[/c] möglich sein sollte ...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Exception wird gefangen, aber trotzdem in Error Log? Java Basics - Anfänger-Themen 10
W Null-Pointer Exception beim Programmstart Java Basics - Anfänger-Themen 8
Ostkreuz String Exception Java Basics - Anfänger-Themen 8
Fiedelbambu Exception in Application constructor Java Basics - Anfänger-Themen 3
S leeres Array statt Null Pointer Exception ausgeben Java Basics - Anfänger-Themen 20
F abbruch Exception lässt sich nicht erstellen Java Basics - Anfänger-Themen 2
U Warum kriege ich hier eine nullpointer exception, sehe den Fehler nicht (swing) Java Basics - Anfänger-Themen 1
F Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 11 at main.main(main.java:11) Java Basics - Anfänger-Themen 2
M Exception in thread "main" java.util.NoSuchElementException Java Basics - Anfänger-Themen 2
N Exception beim Verwenden von Arraylist? Java Basics - Anfänger-Themen 10
B Compiler-Fehler Fehlermeldung Exception in thread, falsche Eingabewert Java Basics - Anfänger-Themen 2
S JavaKara Null Exception Error Java Basics - Anfänger-Themen 4
T Eigene Exception - ohne werfen abfangen Java Basics - Anfänger-Themen 2
LiFunk Exception: es dürfen nur Nummern eingelesen werden Java Basics - Anfänger-Themen 6
low_in_the_head Eigene Exception nutzen Java Basics - Anfänger-Themen 4
1 Exception Java Basics - Anfänger-Themen 2
S Kriege Fehler "Exception in thread" beim Benutzen von SubStrings. Java Basics - Anfänger-Themen 2
I JAX-RS Exception Handling Java Basics - Anfänger-Themen 4
L Meine erste eigene Exception Klasse Java Basics - Anfänger-Themen 10
J null exception Array Java Basics - Anfänger-Themen 5
H Frage zu Throw Exception Java Basics - Anfänger-Themen 2
O Exception in thread "main" java.lang.ArithmeticException: / by zero Java Basics - Anfänger-Themen 4
M Wie kann ich bei int-Variablen im exception handler auf bestimmte Strings reagieren? Java Basics - Anfänger-Themen 5
C Exception-Frage Java Basics - Anfänger-Themen 3
B Exception in thread "AWT-EventQueue-0" java.util.ConcurrentModificationException Java Basics - Anfänger-Themen 8
I Exception bei Button mit wait() und notifyAll() Java Basics - Anfänger-Themen 3
N Wie teste ich eine geworfene Exception? Java Basics - Anfänger-Themen 8
R Methoden ArrayList clonen wirft exception Java Basics - Anfänger-Themen 3
D Scanner- Exception NoSuchElementException Java Basics - Anfänger-Themen 2
N Exception werfen bei falscher Datumseingabe Java Basics - Anfänger-Themen 14
A Exception handeling mit finally und objektreferenzen Java Basics - Anfänger-Themen 6
D Frage zu Strings einer Exception Java Basics - Anfänger-Themen 4
S Exception Java Basics - Anfänger-Themen 2
J Exception-Aufgabe Java Basics - Anfänger-Themen 8
S Verwenden von throw Exception an der Funktion Java Basics - Anfänger-Themen 2
R Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 5
S Compiler-Fehler Exception in thread "main" java.lang.Error: Unresolved compilation problem: Java Basics - Anfänger-Themen 6
Z Fragen zu Exception (Throws/throw) Java Basics - Anfänger-Themen 7
OSchriever Exception für Abbrechen-Schaltfläche JOptionpane Java Basics - Anfänger-Themen 9
J Dateien in Verzeichnissen rekursiv auflisten wirft Exception Java Basics - Anfänger-Themen 4
J Exception unreachable Java Basics - Anfänger-Themen 12
O unchecked Exception Java Basics - Anfänger-Themen 4
P Exception werfen Java Basics - Anfänger-Themen 15
B EJB und Arquillian - bekomme Nullpointer Exception beim Aufruf der EJB Klasse Java Basics - Anfänger-Themen 40
S Exception bei Verwendung von LocalDate Java Basics - Anfänger-Themen 19
I Compiler-Fehler Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 Java Basics - Anfänger-Themen 3
D Warum die Nullpointer Exception Java Basics - Anfänger-Themen 6
O Exception behandlung einfach Ueben mit Fakt! Java Basics - Anfänger-Themen 10
I OOP Was ist die "Exception Hierarchie" ? Java Basics - Anfänger-Themen 3
U Null Exception aber keine Ahnung warum Java Basics - Anfänger-Themen 5
G Exception und Ausgabe der Duplikate Java Basics - Anfänger-Themen 6
H Try Catch Throw Exception Java Basics - Anfänger-Themen 1
W Exception in Main abfangen oder in der Methode? Java Basics - Anfänger-Themen 10
F Referenz an ein Objekt in einer anderen Klasse erstellen(Nullpointer exception) Java Basics - Anfänger-Themen 6
Mosquera Exception Java Basics - Anfänger-Themen 5
M rekursive division/0 mit exception Java Basics - Anfänger-Themen 18
N Nullpointer exception Java Basics - Anfänger-Themen 4
L Eigene Exception schreiben bei zu langem Array Java Basics - Anfänger-Themen 10
R Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 10
I equals (Override) mit eigener Exception (keine Runtime-Exception) Java Basics - Anfänger-Themen 9
S Array Grenzen-Exception Java Basics - Anfänger-Themen 11
E InputStream im Servlet wirft Exception Java Basics - Anfänger-Themen 5
D Erste Schritte Java.lang.NullPointer.Exception Java Basics - Anfänger-Themen 8
G Arrays out of Bounds exception Java Basics - Anfänger-Themen 2
H Compiler-Fehler Out of Bunce Exception bei einem Char Java Basics - Anfänger-Themen 6
C Compiler-Fehler Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 Java Basics - Anfänger-Themen 3
C Null Pointer Exception Java Basics - Anfänger-Themen 10
F Klassen Eigene Exception Bedingungen festlegen Java Basics - Anfänger-Themen 2
G Null Pointer Exception Java Basics - Anfänger-Themen 4
GreenTeaYT Exception und zur OOP fragen? Java Basics - Anfänger-Themen 3
O Exception bei Parse-Vorgang Java Basics - Anfänger-Themen 17
T Exception Problem Java Basics - Anfänger-Themen 5
Z Getter/Setter NullPointer Exception Java Basics - Anfänger-Themen 6
W Nullpointer Exception bei .add(...) Java Basics - Anfänger-Themen 6
L Input/Output InputMismatch.Exception Java Basics - Anfänger-Themen 7
B Exception Liste von Liste Java Basics - Anfänger-Themen 3
D Throw Exception Java Basics - Anfänger-Themen 2
MiMa JavaDoc Exception @throws schlagen an Java Basics - Anfänger-Themen 4
J Exception in thread "main" Java Basics - Anfänger-Themen 1
B Exception richtig einbinden Java Basics - Anfänger-Themen 1
M Exception soll Werte mitgeliefert bekommen Java Basics - Anfänger-Themen 12
M Selbstdefinierte Exception Java Basics - Anfänger-Themen 5
B Exception Throwable Java Basics - Anfänger-Themen 11
M Erste Schritte Start Methode - Exception Java Basics - Anfänger-Themen 1
F Operatoren Wieso fliegt hier eine NullPointer Exception :( Java Basics - Anfänger-Themen 3
F nullpointer exception - arrayerstellung Java Basics - Anfänger-Themen 4
K Iterator-Interface implementieren mit Exception Handlung Java Basics - Anfänger-Themen 1
H Erste Schritte Exception: 0 Java Basics - Anfänger-Themen 2
A Exception vs. Testklasse (Programm testen) Java Basics - Anfänger-Themen 2
L Fehler: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 4
K Exception nur im "Debug"-Modus und jedem 3.-5. mal Ausführen Java Basics - Anfänger-Themen 3
S Java memory fehler: Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap spa Java Basics - Anfänger-Themen 5
L [JFrame] Exception - woher? Java Basics - Anfänger-Themen 8
N Threads Exception in thread "main"... Feher bei dem Versuch ein Radius zu berechnen Java Basics - Anfänger-Themen 4
R "Missbrauch" von Exception zum Programmfluss Java Basics - Anfänger-Themen 1
U Exception: OutOfMemoryError Java Basics - Anfänger-Themen 11
A Int Eingabe: String mit Exception abfangen. Aber wie? Java Basics - Anfänger-Themen 3
A Code läuft nicht, Fehlermeldung Exception in thread "main" java.lang.Error: Unresolved compilation " Java Basics - Anfänger-Themen 11
V Threads Exception in Thread behandeln Java Basics - Anfänger-Themen 3
F Java exception bei der Ausführung Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben