2011-01-09 4 views
3

Je reçois une java.lang.UnsatisfiedLinkError de java.lang.ClassLoader $ NativeLibrary.load() avec le message "Accès refusé". La DLL est en cours de chargement à partir d'un partage réseau via un chemin UNC. Il a précédemment fonctionné sans erreur sur d'autres partages réseau (un sysadmin m'a dit que ce partage particulier est plus "nativement Windows"), donc mon premier instinct a été d'utiliser cacls pour accorder le contrôle total sur le fichier DLL à la fois pour tout le monde et utilisateur spécifique exécutant le code Java. Lorsque je vois les propriétés DLL dans l'Explorateur Windows, il a clairement ces autorisations définies, et pourtant il échoue toujours avec cette erreur. Des idées?UnsatisfiedLinkError "Accès refusé" même avec contrôle total

Répondre

3

Une possibilité est que ce dll est, à son tour, en essayant de charger d'autres DLLs, qui ne sont pas donnés des autorisations suffisantes.

+0

Hmm ... et qui ne seraient pas reflétés dans le message d'erreur, car à ce moment-là le chargement est originaire du code natif? – UltraNurd

+0

Yup, il y avait aussi libdb47.dll dans le répertoire. Faire une subvention avec des cacls semble avoir fait l'affaire. – UltraNurd

+1

Une autre possibilité pour les personnes ayant ce problème, certains fichiers JAR extrait les fichiers DLL pour les utiliser, et doivent être extraites dans un dossier avec les autorisations correctes. Comme dans ce cas: https://github.com/xerial/sqlite-jdbc/issues/97 – Kelly

0

Exécuter en tant qu'administrateur système et il fonctionnera à coup sûr. J'ai eu un même problème et j'ai lancé l'Eclipse en tant qu'Administrateur et cela a fonctionné.