web-dev-qa-db-fra.com

Comment utiliser un caractère générique dans le chemin d'accès aux classes pour ajouter plusieurs fichiers JAR?

J'utilise tellement de bibliothèques tierces (fichiers jar) que mon CLASSPATH est complètement foiré, car je dois inclure le chemin d'accès à chaque fichier jar que j'utilise.

Je me demandais s'il était possible d'inclure tous les fichiers jar dans un dossier à l'aide d'un opérateur générique (*) (comme * .jar). Mais cela semble ne pas fonctionner. Existe-t-il un autre moyen de raccourcir le CLASSPATH qui ressemble actuellement à un essai;) sur mon PC?.

94
paulbullard

De: http://Java.Sun.com/javase/6/docs/technotes/tools/windows/classpath.html

Les entrées de chemin de classe peuvent contenir le caractère générique de nom de base *, ce qui revient à spécifier une liste de tous les fichiers du répertoire portant l’extension .jar ou .JAR. Par exemple, l'entrée du chemin de classe foo/* spécifie tous les fichiers JAR du répertoire nommé foo. Une entrée de classpath consistant simplement en * se développe en une liste de tous les fichiers jar du répertoire en cours.

Cela devrait fonctionner en Java6, pas sûr de Java5

(S'il semble que cela ne fonctionne pas comme prévu, essayez de mettre des guillemets. Exemple: "foo/*")

93
Itay Maman

Cela fonctionne sous Windows:

Java -cp "lib/*" %MAINCLASS%

%MAINCLASS% _ bien sûr est la classe contenant votre méthode principale.

Alternativement:

Java -cp "lib/*" -jar %MAINJAR%

%MAINJAR% est le fichier jar à lancer via son manifeste interne.

23
Chris Milburn

Les caractères génériques de nom de base ont été introduits dans Java 6; c’est-à-dire que "foo/*" signifie tous les fichiers ".jar" du répertoire "foo".

Dans les versions antérieures de Java qui ne prennent pas en charge les classpath génériques, j’ai eu recours à un script d’enveloppe Shell pour assembler un classpath en "effaçant" un motif et en modifiant les résultats pour insérer des caractères ':' Cela serait difficile à faire dans un fichier BAT ...

6
Stephen C

Si vous voulez dire que vous avez une variable d'environnement appelée CLASSPATH, je dirais que c'est votre erreur. Je n'ai une telle chose sur aucune machine avec laquelle je développe Java. CLASSPATH est tellement lié à un projet particulier qu’il est impossible d’avoir un seul CLASSPATH correct qui fonctionne pour tous.

J'ai défini CLASSPATH pour chaque projet en utilisant soit un IDE ou Ant. I) faisant beaucoup de développement Web, de sorte que chaque fichier WAR et EAR utilise son propre CLASSPATH.

Il est ignoré par les IDE et les serveurs d'applications. Pourquoi l'avez-vous? Je recommanderais de le supprimer.

0
duffymo