Comment ajouter une bibliothèque native à " java.bibliothèque.chemin " avec Eclipse Launch (au lieu de le remplacer)


J'ai une bibliothèque native qui doit être ajoutée à java.bibliothèque.chemin. Avec l'argument JVM -Djava.bibliothèque.chemin=chemin... Je peux définir le chemin comme je veux.

Mon problème est que mon autre bibliothèque (pentaho reporting) recherche des polices basées sur java par défaut.bibliothèque.chemin (y compris les répertoires système, etc.) et le réglage manuel remplace le chemin par défaut..

Alors : comment puis-jeajouter une entrée de chemin vers java par défaut.bibliothèque.chemin au lieu de le remplacer (ce qui semble être fait avec -Djava.bibliothèque.chemin d'accès)? (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)

Author: Touko, 2009-03-19

13 answers

Avait 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 être trop simple (au moins avec 3.5; probablement avec les anciennes versions également):

Arguments de la configuration Java run: arguments de la machine virtuelle:

-Djava.library.path="${workspace_loc:project}\lib;${env_var:PATH}"

Ne doit pas oublier les guillemets, sinon il y a des problèmes avec les espaces dans PATH.

 43
Author: Touko, 2010-02-22 08:44:35

Si vous souhaitez ajouter une bibliothèque native sans interférer avec java.library.pathau 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 la boîte de dialogue Java Build Pathsous Native library location. Notez que le nom du fichier de la bibliothèque native doit correspondre au nom du fichier Jar. Voir aussi cettedescription détaillée .

 14
Author: Fabian Steeg, 2010-01-24 23:46:30

SWT place les DLL natives nécessaires dans un JAR. Recherche pour "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 le MÉTA-INF/MANIFESTE.MF pour que la machine virtuelle les récupère.

 9
Author: Aaron Digulla, 2009-12-04 08:19:23

Dans Windows, comme ceci:

-Djava.bibliothèque.chemin="C:/MyLibPath; % CHEMIN%"

%PATH% est votre ancien-Djava.bibliothèque.chemin

 3
Author: andy boot, 2015-06-10 21:20:28

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.

Il est donc (presque) impossible d'ajouter ou d'ajouter un autre dossier de bibliothèque à java.bibliothèque.chemin d'accès 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 le démarrage d'Eclipse, vider le contenu de java.bibliothèque.chemin et arrêter l'éclipse dans une seule commande. Le vidage serait analysé puis pris comme entrée pour lancer Eclipse, c'est-à-dire

#!/bin/bash
# get default value of java.library.path (somehow)
default_lib_path=$( start_dump_stop_eclipse_somehow )  

# now launch Eclipse
eclipse --launcher.appendVmargs \
         -vmargs \
         -Djava.library.path="/my/native/lib/folder:${default_lib_path}"
 2
Author: whaefelinger, 2014-02-21 14:17:22

Pouvez-vous contourner ce problème en appelant System.load() par programme pour charger votre bibliothèque native? Cette méthode (contrairement au système .loadLibrary () ) vous permet de spécifier un chemin absolu.

 1
Author: Simon Nickerson, 2009-03-19 08:36:20

Fenêtre->Préférences->Java->JREs installé. Ensuite, choisissez votre JRE actuel (JDK) et cliquez sur Modifier. Remplissez les Arguments VM par défaut: - Djava.bibliothèque.path=/usr/local/xuggler/lib. Fait!

 1
Author: Vadym, 2010-11-26 08:20:10

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":".

Vous pouvez également utiliser java{system_property:java.bibliothèque.chemin} - Rob Elsner Nov 22 ' 10 à 23: 01

 1
Author: Johan, 2017-08-16 19:29:34

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.bibliothèque.chemin, vers CHEMIN; donc, si la dll est sur votre CHEMIN, alors vous êtes défini.

 0
Author: geowa4, 2009-09-09 01:01:48

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. Aussi, veuillez voir le post de Fabian Steeg Mon téléchargement pour jawin contenait différents noms pour dll et jar. Il a été jawin.jar et jawind.dll, notez 'd' supplémentaire dans le nom du fichier dll. Je l'ai simplement renommé jawin.dll et la définir comme une bibliothèque native dans eclipse comme mentionné dans post "http://www.eclipsezone.com/eclipse/forums/t49342.html"

 0
Author: Dhana, 2010-07-09 07:25:24

Pour une raison quelconque, je ne pouvais pas faire fonctionner plusieurs dossiers (eh bien, cela l'a fait 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 l'ai eu comme mon java.bibliothèque.chemin et cela a fonctionné. Je n'ai pas d'explication - si quelqu'un le fait, ce serait génial.

 0
Author: Ustaman Sangat, 2011-12-09 16:06:28

Un grand Nombre de réponses supposent que vous souhaitez définir pour un projet particulier, mais j'avais besoin pour Eclipse lui afin de soutenir 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-Djava.bibliothèque.argument de chemin d'accès à la ligne de commande Java.

 0
Author: CrazyPyro, 2014-03-26 22:28:06

Sous Windows, j'ai trouvé que l'important est de démarrer Eclipse à partir de la ligne de commande plutôt que depuis le menu Démarrer ou un raccourci, à condition que la DLL native se trouve dans un répertoire dans votre CHEMIN. Apparemment, cela garantit que le répertoire approprié est sur le chemin.

 -2
Author: Alan, 2013-08-08 19:46:26