2009-07-16 12 views
11

Dans un programme Java je suis en train d'écrire, je fais un appel JNI à une dll et charger la bibliothèque au démarrage comme suitVérifiez si une bibliothèque DLL est déjà chargée? (Java)

static 
{ 
    System.loadLibrary("LdapAuthenticator2"); 
} 

je puis mis en œuvre une autre classe qui charge la même bibliothèque et je suis obtenir une erreur en disant que la bibliothèque est déjà chargée, est-il possible de vérifier si la bibliothèque est déjà en cours d'exécution?

Merci,
-Pete

Répondre

0

Quel genre d'une erreur? Si c'est une exception, pouvez-vous l'attraper?

Une autre approche consisterait à définir exactement une classe responsable du chargement de la bibliothèque. Vous pouvez charger la bibliothèque dans l'initialisation statique de la classe, puis charger la classe == en chargeant la bibliothèque.

EDIT: les javadocs for Runtime.loadLibrary() (qui System.loadLibrary appels) suggère même l'approche initialiseur statique:

Si les méthodes natives sont à utiliser dans la mise en œuvre d'une classe, une stratégie standard est de mettre le natif code dans un fichier de bibliothèque (appeler libfile), puis de mettre un initialiseur statique:

 static { System.loadLibrary("LibFile"); } 

dans la déclaration de classe. Lorsque la classe est chargée et initialisée, l'implémentation du code natif nécessaire pour les méthodes natives sera ensuite également chargée.

Les javadocs disent aussi:

Si cette méthode est appelée plus d'une fois avec le même nom de la bibliothèque, les appels deuxième et les suivants sont ignorés.

ce qui me rend encore plus curieux au sujet de l'erreur que vous obtenez.

+2

Je suppose qu'il obtient un UnsatisfiedLinkError parce que deux classloaders différents tentent de charger la même bibliothèque native – jitter

+1

Quelques liens pertinents au problème http://bugs.sun.com/bugdatabase/view_bug.do?bug_id= 4750956 et http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5075039 – jitter

+0

ouais jitter est juste, c'est l'erreur que je reçois, merci pour les liens jitter –

Questions connexes