2010-11-16 4 views
1

Peut-être que c'est une question en double, mais je n'ai pas trouvé quelque chose par moi-même.But de java.library.path

Fondamentalement, j'ai un problème de compréhension.

J'ai une application qui fonctionne très bien quand je l'appelle comme suit:

java -Duser.dir="some path" -Djava.library.path="pathToDLL1;pathToDLL2;pathToMyDir" classToCall par1 

Avec l'appel ci-dessus mon application démarre et fonctionne.

Mon problème de compréhension est dans le répertoire pathToMyDir (le contenu de ce répertoire est principalement quelques DLLs nécessaires). Lorsque je lance la même application avec la commande suivante, elle échouera.

java -Duser.dir="some path" -Djava.library.path="pathToMyDir;pathToDLL1;pathToDLL2" classToCall par1 

Je ne suis pas sûr que ce soit à cause de certaines dépendances, mais je pensais que le java.library.path est principalement utilisé pour dire java où chercher des bibliothèques externes. Ou est-ce faux? Y a-t-il aussi des informations de commande cachées?

+0

Jeff Storey a raison. Vous ne devez jamais inclure de fichiers jar dans java.library.path: ils sont simplement ignorés. Je ne sais pas pourquoi votre application échoue. Essayez de vérifier le chemin à nouveau. Essayez de supprimer Jar1 et Jar2 de java.library.path et placez-les dans -cp (classpath). – AlexR

+0

Je pense qu'il a raison à coup sûr et j'ai vraiment tort. J'ai fait une faute de frappe terrible. Il ne devrait pas être pathToJar il devrait être pathToDll. Bien sûr, je ne vais pas mettre un chemin vers un pot dans le chemin de la bibliothèque. – BtD

Répondre

9

-Djava.library.path est utilisé pour pointer vers des bibliothèques système natives (dll ou fichiers). Il pointe vers un répertoire et appelle le code natif qui utilise System.loadLibrary recherche dans ce répertoire pour les bibliothèques natives.

Les dépendances de projet (fichiers jar) doivent être spécifiées dans le chemin de classe de l'application, pas à cet emplacement.