web-dev-qa-db-fra.com

Où mettre les pots externes?

J'utilise Eclipse (3.4) et ma classe se compile sans avertissement ni erreur. Mon projet utilise un fichier jar externe.

Où dois-je placer ce fichier jar externe pour ne pas obtenir un Java.lang.NoClassDefFoundError lors de l'utilisation de cette classe à partir d'un autre projet (pas dans Eclipse)?

Je pourrais simplement extraire le pot dans le dossier du projet, mais cela ne me semble pas correct.

Edit: cette question ne concerne pas l'importation de pots dans Eclipse, mais leur utilisation en dehors d'Eclipse.

46
Burkhard

Si vous souhaitez inclure un fichier JAR dans votre projet Eclipse, vous devez généralement créer un dossier "lib" dans le dossier du projet et y placer le fichier. Vous devez ensuite dire à Eclipse de l'inclure dans votre chemin de classe pour que votre code se compile et s'exécute dans Eclipse.

Pour faire ça:
- Entrez dans les propriétés de votre projet
- Sélectionnez 'Java Build Path' dans la colonne de gauche
- Sélectionnez l'onglet 'Bibliothèques' dans la partie centrale de la fenêtre
- Cliquez sur le bouton Ajouter des fichiers JAR - cela vous donnera une liste de vos projets dans Eclipse - développez votre projet et dans le dossier lib - votre fichier sera là.
- Sélectionnez le JAR, cliquez sur OK, puis à nouveau sur OK dans la fenêtre des propriétés.

Votre code va maintenant se compiler et s'exécuter.

57
James Camfield

mettez-le dans votre jre/lib/ext dossier

tout ce qui est dit sur le chemin de classe est vrai, mais c'est un endroit cohérent et sensé pour qu'il vive.

vous pouvez trouver votre dossier jre en consultant la variable d'environnement Java_HOME sous Windows.

19
Simon

Peu importe où vous le placez, mais vous devez configurer votre autre projet non Eclipse pour placer les pots externes dans son chemin de classe - ou utiliser le mécanisme de répertoire d'extensions, si vous le devez. (C'est plus facile, mais le rendre explicite est sans doute mieux.)

7
Jon Skeet

La réponse de Simon semble être la meilleure mais un peu dépassée maintenant. Ont googlé ce document Oracle Extensions installées .

À partir de Java 6, les fichiers JAR d'extension peuvent également être placés dans un emplacement indépendant de tout JRE particulier, afin que les extensions puissent être partagées par tous les JRE installés sur un système.

Il indique que pour Windows, vous devez placer vos extensions ici% SystemRoot%\Sun\Java\lib\ext.

5
user3132194

Il vous suffit de le référencer à l'aide d'un -classpath option, dans un dossier qui n'est pas inclus dans un espace de travail Eclipse, c'est-à-dire qui ne dépend pas du tout d'Eclipse.

Attention, vous pouvez exécuter votre autre projet avec Java -jar si vous référencez votre pot externe avec -cp option ( voir cette question )

1
VonC

Je le place dans un nouveau dossier. Ce dossier doit être inclus dans le chemin de génération. Peu importe que ce soit dans Eclipse ou à l'extérieur. Eclipse a un chemin de construction spécifique au projet et il passe ce chemin au javac. Si vous souhaitez exécuter javac en dehors d'Eclipse, vous devez passer manuellement le chemin de génération.

0
guerda

Je sais que ce n'est pas exactement ce que vous demandez, mais avez-vous envisagé d'utiliser Maven? Certains plugins comme Assembly peuvent être utiles dans des situations comme celles-ci.

0
javamonkey79

Ayez un pot à l'intérieur d'Eclipse, comme l'a écrit James Camfield.

Ensuite, lorsque vous générez (Ant, Maven, manuellement) pour la distribution, assurez-vous que le fichier jar est inclus avec ou dans votre jar d'application ou war ou ear ou tout autre fichier, et que tous les scripts de démarrage l'incluent dans le chemin de classe à l'aide de la ligne de commande -classpath option pour Java, comme l'a écrit VonC.

Ne vous inquiétez pas de coller les pots dans le dossier des extensions Java, tout cela vous fera oublier quand il s'agit d'envoyer votre code à un tiers pour l'utiliser, car ils ont gagné 'ai pas mis en place à leur fin.

0
JeeBee

Créez un répertoire lib partagé et placez ce fichier jar et tous les autres fichiers jars courants que vous pourriez y avoir. Si vous utilisez Maven, vous l'avez déjà sous la forme du dépôt local.

Dans Eclipse, créez une variable de chemin de classe pour ce répertoire, puis utilisez-la pour référencer votre fichier jar dans vos projets. Si plusieurs projets remplissent ces conditions, cela vous facilitera la vie. Cela facilite également la modification de l'emplacement du répertoire racine si vous passez d'un lecteur local à un lecteur réseau.

Dans l'application externe, vous inclurez également ce fichier jar depuis son emplacement partagé dans le chemin de classe des applications.

0
Robin