Ajouter.dll vers java.bibliothèque.chemin dans Eclipse/PyDev Jython projet

j'essaie d'utiliser une compilation.bibliothèque jar Java dans mon projet PyDev Jython.

j'ai ajouté avec succès à la .jar à la PYTHONPATH et a été en mesure de commencer le codage avec le travail automatique complet.

la bibliothèque a besoin d'un .dll extension aussi,javaHeclib.dll, donc j'ai ajouté cela à la section Libs externe de mon projet.

je peux importer la bibliothèque de l'amende, mais j'obtiens une erreur lorsque je tente d'accéder à l'une de ses fonctions:

java.lang.UnsatisfiedLinkError: java.lang.UnsatisfiedLinkError: no javaHeclib in java.library.path

j'ai ajouté un Argument VM à ma Configuration de Run, sans chance:

-Djava.library.path="Y:/path/to/javaHeclib.dll;${env_var:PATH}"

je peux exécuter la bibliothèque à partir de la ligne de commande très bien en utilisant le java.library.path ci-dessus.

expérimentant dans la Console PyDev, j'ai remarqué que je peux charger le .dll d'extension avec un chemin absolu, mais pas par un relatif:

>>> import java.lang
>>> java.lang.System.load('Y:/path/to/javaHeclib.dll')
>>> java.lang.System.loadLibrary('javaHeclib')
Traceback (most recent call last):
  File "<console>", line 1, in ?
java.lang.UnsatisfiedLinkError: java.lang.UnsatisfiedLinkError: no javaHeclib in java.library.path

malheureusement, la bibliothèque utilise le System.loadLibrary l'appel ci-dessus, et je n'ai pas accès à sa source.

Pourquoi javaHeclib.dll pas dans mon <!--6?

EDIT

java.library.path vers le répertoire contenant la dll ne m'a pas permis de le charger en utilisant System.loadLibrary.

-Djava.library.path="Y:/path/to/dll/;${env_var:PATH}"

(L'utilisation de slashes vers l'avant n'a pas fait de différence.) J'ai aussi essayé de changer le VM args par défaut dans eclipse.ini, avec pas de chance:

-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx384m
-Djava.library.path="Y:pathtodll;${env_var:PATH}"
17
demandé sur Robbie Rosati 2012-06-20 19:47:58

3 réponses

je pense que la meilleure façon est:

  1. créer un dossier sous le projet, par exemple dll.
  2. Copier/coller tous les fichiers dll dans ce dossier.
  3. dans project - > Properties - > Java Build Path - > Source, cliquez et développez les détails de la source.
  4. vous verrez L'emplacement de la bibliothèque Native, cliquez / surlignez-le.
  5. Puis cliquez sur modifier sur la droite, cliquez sur espace de travail nouveau. Vous pouvez voir le dossier dll sous le projet.
  6. Sélectionner et cliquez sur OK, OK. Vous verrez que la dll est ajoutée dans l'emplacement de la bibliothèque Native.

c'est tout. Vous n'avez pas besoin de changer quoi que ce soit manuellement dans la configuration.

39
répondu Wayne 2013-02-01 18:57:40

j'ai eu ce travail.

Pour référence future:

dire que la dll dont vous avez besoin est en Y:\path\to\dlls\lib\. Ensuite, définissez le répertoire de travail de votre Configuration D'exécution à Y:\path\to\dlls\ et définissez vos arguments VM pour inclure -Djava.library.path=lib.

c'est ça, il devrait maintenant fonctionner. Je ne sais pas pourquoi spécifier un chemin absolu java.library.path n'a pas fonctionné auparavant, mais définir un répertoire de travail semble l'avoir fait.

peut-être que c'est quelque chose de particulier à la bibliothèque spécifique que je suis utiliser (ou que Eclipse est en cours d'exécution à partir d'un lecteur différent que la Bibliothèque est sur)...

7
répondu Robbie Rosati 2012-06-20 22:13:11

j'ai eu le même problème, mais avec Ghost Script dll. Même si suivi placer les fichiers dans le répertoire de travail et a suivi les instructions, il n'a pas fonctionné pour moi, renvoyer l'étiquette Ghost4J. java.lang.UnsatisfiedLinkError: impossible de charger la bibliothèque 'gsdll64' et utilisé l'-Djna.bibliothèque.chemin d'accès pour obtenir cela a fonctionné.

0
répondu Jeya Venkatesh 2017-06-12 19:10:54