J'ai une bibliothèque native qui doit être ajoutée à java.library.path . Avec l'argument JVM -Djava.library.path = path ... je peux définir le chemin comme je veux.
Mon problème est que mon autre bibliothèque (rapport pentaho) recherche les polices en fonction du chemin par défaut java.library.path (y compris les répertoires système, etc.) et le paramètre manuel remplace le chemin par défaut.
Alors: comment puis-je ajouter une entrée de chemin au chemin par défaut java.library.path au lieu de le remplacer (ce qui semble être fait avec -Djava.library.path)? (Je ne voudrais pas ajouter le chemin par défaut à la main, ce qui ne serait pas bien pour le déploiement)
EDIT: Désolé pour les détails manquants; Je travaille avec Eclipse. (Le déploiement se fait avec JNLP et là je peux utiliser nativelib sous ressources )
Réponses:
J'avais oublié ce problème ... Je demandais en fait avec Eclipse, désolé de ne pas l'avoir dit à l'origine. Et la réponse semble trop simple (au moins avec 3.5; probablement avec les anciennes versions aussi):
Arguments de la configuration d'exécution Java: arguments VM:
Il ne faut pas oublier les guillemets, sinon il y a des problèmes d'espaces dans PATH.
la source
Si vous souhaitez ajouter une bibliothèque native sans interférer avec
java.library.path
au moment du développement dans Eclipse (pour éviter d'inclure des chemins absolus et d'avoir à ajouter des paramètres à votre configuration de lancement), vous pouvez fournir le chemin d'accès à l'emplacement des bibliothèques natives pour chaque Jar dans Java Build Boîte de dialogue Chemin sous Emplacement de la bibliothèque native . Notez que le nom du fichier de la bibliothèque native doit correspondre au nom du fichier Jar. Voir également cette description détaillée .la source
java.library.path
et je suis revenue après avoir trouvé la solution ailleurs. Je modifierai ma réponse pour que cela soit plus clair.SWT place les DLL natives nécessaires dans un JAR. Recherchez "org.eclipse.swt.win32.win32.x86_3.4.1.v3449c.jar" pour un exemple.
Les DLL doivent être à la racine du JAR, le JAR doit être signé et la DLL doit apparaître avec la somme de contrôle dans META-INF / MANIFEST.MF pour que la VM les récupère.
la source
java.library.path
. Proposez-vous qu'il ne recherche que la racine dejar
?Sous Windows, comme ceci:
-Djava.library.path = "C: / MyLibPath;% PATH%"
% PATH% est votre ancien -Djava.library.path
la source
Pouvez-vous contourner cela en appelant System.load () par programme pour charger votre bibliothèque native? Cette méthode (contrairement à System.loadLibrary () ) vous permet de spécifier un chemin absolu.
la source
https://bugs.eclipse.org/bugs/show_bug.cgi?id=102239 indique qu'il n'y a pas de mécanisme de substitution implémenté dans le lanceur d'Eclipse, du moins pas jusqu'à la sortie de Juno.
Ainsi, il est (presque) impossible d'ajouter ou de préfixer un autre dossier de bibliothèque à java.library.path lors du lancement d'Eclipse sans connaissance préalable du paramètre par défaut.
J'ai presque écrit, car il devrait être possible de laisser démarrer Eclipse, de vider le contenu de java.library.path et d'arrêter Eclipse en une seule commande. Le vidage serait analysé puis pris comme entrée pour le lancement d'Eclipse, c'est-à-dire
la source
Dans les systèmes UNIX, vous pouvez ajouter à la variable d'environnement LD_LIBRARY_PATH. Sous Windows, la JVM définit automatiquement la propriété système, java.library.path, sur PATH; donc si la dll est sur votre PATH, alors vous êtes prêt.
la source
Fenêtre-> Préférences-> Java-> JRE installés. Choisissez ensuite votre JRE (JDK) actuel et cliquez sur Modifier. Remplissez les arguments VM par défaut: -Djava.library.path = / usr / local / xuggler / lib. Terminé!
la source
La solution proposée par Rob Elsner dans l'un des commentaires ci-dessus fonctionne parfaitement (OSX 10.9, Eclipse Kepler). Il faut ajouter leurs chemins supplémentaires à ceux séparés par ":".
la source
Le nom du fichier de la bibliothèque native doit correspondre au nom du fichier Jar. C'est très très important. Veuillez vous assurer que le nom du jar et le nom de la DLL sont identiques. Veuillez également consulter le message de Fabian Steeg. Mon téléchargement pour jawin contenait différents noms pour dll et jar. C'était jawin.jar et jawin d .dll, notez un «d» supplémentaire dans le nom du fichier dll. Je l'ai simplement renommé en jawin.dll et l'ai défini comme bibliothèque native dans eclipse comme mentionné dans le post " http://www.eclipsezone.com/eclipse/forums/t49342.html "
la source
Pour une raison quelconque, je ne pouvais pas faire fonctionner plusieurs dossiers (eh bien, cela a fonctionné pendant un certain temps, mais dès que j'ai eu besoin de plus de dll et ajouté plus de dossiers, aucun avec des espaces blancs dans le chemin). J'ai ensuite copié toutes les dll nécessaires dans un dossier et je l'ai utilisé comme java.library.path et cela a fonctionné. Je n'ai pas d'explication - si quelqu'un le fait, ce serait génial.
la source
La plupart des réponses existantes supposent que vous souhaitez définir cela pour un projet particulier, mais je devais le définir pour Eclipse lui-même afin de prendre en charge l'authentification intégrée pour le pilote JDBC SQL Server.
Pour ce faire, j'ai suivi ces instructions pour lancer Eclipse à partir de la ligne de commande Java au lieu de son lanceur normal. Ensuite, je viens de modifier ce script pour ajouter mon argument -Djava.library.path à la ligne de commande Java.
la source
java.library.path
est initialisé avec les valeurs des variables ci-dessus sur sa plateforme correspondante.Cela devrait fonctionner sur n'importe quel IDE.
Vous pouvez tester si la valeur est ce que vous attendez en appelant
java -XshowSettings:properties
la source
Sous Windows, j'ai trouvé que l'important est de démarrer Eclipse à partir de la ligne de commande plutôt qu'à partir du menu Démarrer ou d'un raccourci, à condition que la DLL native se trouve dans un répertoire de votre PATH. Apparemment, cela garantit que le répertoire approprié est sur le chemin.
la source