IntelliJ Idea et JNI: s'Assurer que les DLL Sont là Où Ils Doivent l'être pour l'Exécution
Je suis en train de travailler avec un tiers de la bibliothèque dans un projet, et il comprend deux .les fichiers dll et un .jar fie à fournir un JNI Wrapper. Le projet de test que le fournisseur tiers inclus dans le .fichier jar peut être appelée à l'aide de la commande suivante:
java -cp product.jar com.company.samples.product.Test
Cela fonctionne bien, tant que le .jar et à la fois de la dll dans le même répertoire.
Dans mon projet, j'ai mis le fichier jar et la dll dans le même répertoire, et puis référencé le fichier jar comme une bibliothèque dans IntelliJ Idea, mais cela provoque la bibliothèque incapables de trouver la dll. Est-il possible que je peux Idée de l'endroit où la dll sorte qu'il peut leur sortie dans le même répertoire que le fichier jar au cours de l'exécution?
OriginalL'auteur Brendon Dugan | 2013-01-21
Vous devez vous connecter pour publier un commentaire.
À l'Ide, lorsque vous souhaitez ajouter un répertoire où .dll est trouvé à faire:
1) Ouvrez le Projet de la Structure de la boîte de dialogue (par exemple Ctrl+Maj+Alt+S).
2) Dans le volet gauche de la boîte de dialogue, sélectionnez les Modules.
3) Dans le volet de droite, sélectionnez le module d'intérêt.
4) Dans la partie droite de la boîte de dialogue, sur la page du Module, sélectionnez l'onglet Dépendances.
5) Sur l'onglet Dépendances, cliquez sur "+" et sélectionnez les Pots ou des répertoires.
6) Dans la boîte de dialogue qui s'ouvre, sélectionnez le nécessaire fichiers et dossiers. Ceux-ci peuvent être individu .classe et .java des fichiers, des répertoires et des archives.jar et .zip) contenant ces fichiers ainsi que répertoires avec Java native bibliothèques (.dll, .donc ou .jnilib). Cliquez sur OK.
Voir pour des explications sur https://www.jetbrains.com/help/idea/2016.3/configuring-module-dependencies-and-libraries.html#d1860048e28 .
C'est de cette façon-je ajouter .dll (sql_auth.dll) pour le pilote JDBC à utiliser la sécurité intégrée de MS SQL.
OriginalL'auteur display_name
Vous pouvez définir la
java.library.path
à la propriété système de point à Java où chercher pour les bibliothèques natives.Note, selon cette réponse, c'est un champ en lecture seule qui est vérifié avant que vous avez l'occasion de le changer dans le code, mais ils fournissent un travail autour de. En général, je n'ai jamais nécessaire de définir la valeur au moment de l'exécution par rapport au lancement.
OriginalL'auteur pickypg
Les DLL sont chargées à partir de variable de chemin d'accès. Vous pouvez changer la valeur au moment du lancement de l'application.
Alternativement, vous pouvez construire le chemin de la dll (encore une fois en utilisant la variable d'environnement /de la variable système) et les charger via Système.load()
OriginalL'auteur Jayan