12
votes

Groupage dll natif avec pot

Duplicaté possible:

Comment faire une bibliothèque indigène et une bibliothèque JNI à l'intérieur d'un pot?

Je dois inclure Native Lib (Jnotify, mais je pense que tout cela n'a aucune importance) à mon pot. Je veux le faire avec Netbeans.

J'ai ajouté Bundle-Nativecode: /lib/jnotify.dll; osname = win32 à mon manifeste.mf fichier et ajouté jnotify.dll vers projekthome \ src \ lib \ dossier. Mais malheureusement, NetBeans est trop suradourant manifeste.mf fichier.

Comment puis-je corriger? Puis-je faire cela en utilisant uniquement des NetBeans? Est-ce la ligne ' bundle-nativecode: /lib/jnotify.dll; Osname = Win32 correct? J'ai aussi entendu dire que je devrais mettre des dlls hachage dans manifeste.mf et signer mon pot. Est-ce vrai?


0 commentaires

3 Réponses :




6
votes

Parfois, j'ai trouvé que le problème n'est pas la façon Java de charger des libs indigènes, mais la bibliothèque tierce qui a besoin de ce code natif.

Le problème est que les bibliothèques 3ème partie feront à un moment donné (normalement très tôt dans l'initialisation) xxx

et si natif.dll n'est pas au lieu approprié. jette une erreur.

Si vous avez accès à la source Java de la bibliothèque 3ème partie, il serait peut-être facile de corriger ce code et vous pourriez facilement extraire votre DLL du bocal et exécuter System.load avant d'utiliser le 3ème partie lib.

mise à jour J'ai examiné les sources de jnotify. C'est exactement ce que j'ai dit: xxx

prenez la ligne *** out ou surround de try-capture, charge avec système.Load () et vous avez terminé.


2 commentaires

bon point, mais je pense que ce n'est pas un problème dans mon cas: "Pour utiliser Jnotify, vous devez avoir la bibliothèque natale (jnotify.dll ou jnotify.so) dans votre java.library.path. Pour ce faire, vous devez Utilisez l'application -djava.library.Path Prameter lorsque vous exécutez l'application Java. Par exemple: java -cp jnotify.jar -djava.jar -djava.library.path =. "


Merci beaucoup. Vous êtes 100% raison. Je pensais à créer une chauve-souris et je pensais que la modification de l'emplacement de DLL devrait être un problème. Quand j'ai lu votre réponse, j'ai pensé "j'ai vérifié que je peux faire tout ce qui avec mon del" mais je vérifiais une chose complètement différente. Je dois être fatigué.