Réduire la taille du fichier JAR externe

J’ai développé un module pour un projet Java. Le module dépend d’une bibliothèque externe ( fastutil ). Le problème est que le fichier fastutil.jar est deux fois plus lourd que l’ensemble du projet lui-même (14 Mo). Je n’utilise qu’un petit sous-ensemble des classes de la bibliothèque. Le module est maintenant terminé et personne ne l’étendra à l’avenir. Existe-t-il un moyen de ne récupérer que la classe pertinente dans un fastutil_small.jar afin que les autres utilisateurs n’aient pas à télécharger tout ce poids supplémentaire?

Les outils de dissimulation tels que ProGuard fournissent généralement une fonctionnalité permettant de supprimer les classes inutilisées (et même les champs et les méthodes) du fichier jar. Vous devez toutefois veiller à vérifier que tout fonctionne toujours, car vous utilisez peut-être reflecton pour accéder à des classes ou à des méthodes que ProGuard ne peut pas parsingr.

Vous pouvez utiliser uniquement cette fonctionnalité et déjà économiser un peu

Vous pouvez également le combiner avec d’autres techniques d’obscurcissement peu encombrantes (telles que le renommage de classes et de méthodes) pour gagner encore plus d’espace au prix d’un débogage plus difficile (vos traces de stack deviendront plus difficiles à parsingr).

À partir des instructions d’installation de fastutil:

Notez que le fichier jar est énorme, en raison du grand nombre de classes: si vous envisagez d’expédier votre propre jar avec certaines classes fastutil incluses, vous devriez consulter AutoJar (également disponible sur JPackage) pour extraire automatiquement les classes nécessaires.

Comme fastutil est un logiciel à code source ouvert LGPL, vous pouvez simplement copier les fichiers source pertinents dans votre projet et supprimer ce fichier jar. Le compilateur vous dira ensuite si vous avez tous les fichiers dont vous avez besoin. Il suffit de conserver les paquets tels quels et de placer une copie du fichier de licence fastutil au premier plan.

Ouais, un brut est d’avoir une sauvegarde de votre pot original. puis supprimez tous les fichiers de classe inutilisés du fichier jar. et il peut y avoir des références internes à une autre classe que vous pouvez append au besoin. c’est-à-dire que lors de son exécution, une exception de classe non trouvée peut être levée, vous pouvez donc append cette classe du fichier jar d’origine à ce fichier.