2011-01-09 10 views
3

Ich bekomme einen java.lang.UnsatisfiedLinkError von java.lang.ClassLoader $ NativeLibrary.load() mit der Meldung "Zugriff verweigert". Die DLL wird von einer Netzwerkfreigabe über einen UNC-Pfad geladen. Es funktionierte vorher ohne Fehler auf anderen Netzwerkfreigaben (ich wurde von einem Sysadmin darauf hingewiesen, dass diese bestimmte Freigabe "nativer Windows" ist), also war mein erster Instinkt, cacls zu verwenden, um Vollzugriff auf die DLL-Datei sowohl für Jeder als auch für die bestimmter Benutzer, der den Java-Code ausführt. Wenn ich die DLL-Eigenschaften in Windows Explorer anzeigen, hat es eindeutig diese Berechtigungen festgelegt, und dennoch ist es mit diesem Fehler weiterhin fehlgeschlagen. Irgendwelche Ideen?UnatisfiedLinkError "Zugriff verweigert" auch bei Vollzugriff

Antwort

3

Eine Möglichkeit ist, dass diese DLL wiederum versucht, andere DLLs zu laden, denen keine ausreichenden Berechtigungen erteilt wurden.

+0

Hmm ... und das würde sich nicht in der Fehlermeldung widerspiegeln, weil zu diesem Zeitpunkt das Laden im nativen Code stammt? – UltraNurd

+0

Yup, es gab auch eine libdb47.dll im Verzeichnis. Ein Zuschuss dafür zu geben, scheint den Zweck erfüllt zu haben. – UltraNurd

+1

Eine andere Möglichkeit für Leute mit diesem Problem, extrahieren einige Gläser die DLL-Dateien, um sie zu verwenden, und müssen in einen Ordner mit den richtigen Berechtigungen extrahiert werden. Wie in diesem Fall: https://github.com/xerial/sqlite-jdbc/issues/97 – Kelly

0

Führen Sie es als Systemadministrator und es wird sicher funktionieren. Ich hatte das selbe Problem und habe die Eclipse als Administrator ausgeführt und es hat funktioniert.