Je pense que @Yishai a le droit de le faire (je vais lui donner un vote pour lancer le bal). Je cours dans tout le temps. Dans ce que je pense était une décision horrible pour le langage Java, ils ont décidé qu'il serait correct d'autoriser les paramètres de chemin de classe à entrer dans les fichiers MANIFEST dans les fichiers jar. Donc, essentiellement, Jars peut avoir des fichiers à l'intérieur d'eux qui pointent vers d'autres classes et pots situés ailleurs et quand les autres choses qu'ils pointent n'existent pas, vous voyez des avertissements comme ceux que vous obtenez. Ces avertissements proviennent des fichiers Jar qui se trouvent sur votre chemin de classe de compilation. Donc, ce que vous devez faire si vous vous souciez vraiment est de dépister les fichiers jar problème, extraire le contenu des fichiers jar, supprimer les paramètres "Class-Path" dans leurs fichiers manifeste et les recréer. Quelque chose comme ceci (déplacez le pot vers un répertoire temporaire quelque part d'abord):
#Extract the jar file
jar xvf myfile.jar
rm myfile.jar
emacs ./META-INF/MANIFEST.MF
*Find the entry "Class-path:" and remove it completely and save the changes
#Rebuild the jar file
jar cvf myfile.jar ./*
Cela devrait faire l'affaire! Je ne pense pas que vous vouliez simplement supprimer ces messages, car si vous voulez un contrôle total sur ce qui se passe sur votre chemin de classe, vous devriez rechercher ces fichiers manifestes et vous assurer qu'ils ne gâchent pas le chemin des classes d'une manière tu ne sais pas. Il est probable que vous deviez regarder à travers une tonne de fichiers jar, donc je finis généralement par utiliser une boucle de shell pour m'aider à les parcourir. Vous pouvez copier tous vos Jars en question dans un répertoire temporaire et exécuter une boucle comme celui-ci (bash syntaxe):
for i in *.jar; do echo $i; jar xf $i; grep -i 'class-path' ./META-INF/MANIFEST.MF; done
qui imprimera le nom de chaque fichier Jar dans le répertoire courant, extraire son contenu, et grep son fichier manifeste pour les entrées classpath. Si le nom du fichier jar dans la sortie a une impression "Class-Path" après cela, cela signifie que Jar a des paramètres de classpath dans son manifeste. De cette façon, vous pouvez, espérons-le, trouver les bocaux dont vous avez besoin pour agir.
Merci pour l'élaboration! – Yishai
Bonne idée, mais vous polluez le répertoire actuel avec le contenu des fichiers JAR. –
@LawrenceDol C'est pourquoi il est dit 'Vous pouvez copier tous vos pots en question dans un répertoire temporaire ...' –