En tant que connaissance préalable pour comprendre les options des fichiers JAR Tout d'abord, je vais vous expliquer les spécifications du fichier JAR.
Le fichier JAR peut contenir les éléments suivants: Pour chaque élément, supposons que vous ayez un fichier JAR appelé "sample-root.jar".
Un aperçu de chacun est donné ci-dessous.
INDEX.LIST Un fichier généré par l'option -i de la commande jar. Dans le fichier JAR qui contient ce fichier et dans les autres fichiers JAR dont il dépend En indexant les informations de localisation du package stocké, Il est utilisé pour accélérer le traitement du chargeur de classe.
INDEX.Échantillon de liste
JarIndex-Version: 1.0
sample-root.jar
com
com/example
com/example/app
S'il existe des fichiers JAR dépendants, ces informations suivent également...
MANIFEST.MF
Le fichier manifeste est un fichier contenant diverses méta-informations du fichier JAR. Il se compose d'une section principale et de sections individuelles, et peut être défini à l'aide de la méthode de paire «attribut: valeur». Si le même attribut est défini plusieurs fois, celui de la section individuelle est prioritaire.
#==========Section principale==========
#information sur la version(Obligatoire)
Manifest-Version: 1.0
#Attribut principal
#attribut:valeur
#Assurez-vous qu'il y a une ligne entre la section principale et les sections individuelles
# ===========Section individuelle===========
#Attribut par entrée
#attribut:valeur
Vous trouverez ci-dessous les principaux attributs pouvant être définis dans le fichier manifeste.
[Attribut principal]
--Version du manifeste:
Outre,
--Attributs définis pour les applications autonomes (comme l'en-tête Main-Class) --Attributs définis pour les applets --Attributs définis pour identifier les extensions --Attributs définis pour les informations de version et de scellement des extensions et des packages
Il existe différents attributs tels que.
[Attributs par entrée]
sample-root.DSA et sample-root.SF sont des fichiers de signature, Cet article ne mentionne pas les outils de sécurité Java, je vais donc les omettre.
Il existe une fonction appelée fournisseur de services pour utiliser la fonction du fichier JAR externe, Un répertoire qui stocke des classes concrètes qui s'interfacent avec des fichiers JAR externes. Je vais omettre l'explication cette fois, donc si vous voulez en savoir plus, veuillez vous référer à l'article suivant. Article de référence: Fonction du fournisseur de services de fichiers JAR
--c: nouvellement créé --u: mise à jour --x: Extraire les fichiers et répertoires --t: Liste du contenu de l'archive --f: spécifier le fichier JAR
--M: ne pas créer de fichier manifeste --Pour c ou u: ne pas créer de fichier manifeste --u et si le fichier manifeste existe: supprimez le fichier manifeste --m: ajoute la paire d'attributs du fichier manifeste spécifié --Si un attribut portant le même nom existe: écraser par la paire d'attributs du fichier manifeste spécifié --Si l'attribut du même nom n'existe pas: ajoutez la paire d'attributs du fichier manifeste spécifié.
--v: affiche des informations détaillées telles que l'opération effectuée par la commande jar et la liste des fichiers stockés.
--0: Générer un fichier JAR sans compression ZIP
--i
#Créez un fichier JAR nommé jarfile avec les ressources sous inputfiles
jar c[v0M]f jarfile [-C dir] inputfiles [-Joption]
#Créer un fichier jar avec les ressources sous les fichiers d'entrée
#Ajouter de la valeur au manifeste(Ne pas supprimer)
jar c[v0]mf manifest jarfile [-C dir] inputfiles [-Joption]
[À propos de l'ordre de description de l'option m et de l'option f] L'ordre de description de l'option m et de l'option f n'est pas décidé, Pour cmf, manifest jarfile, pour cfm, jarfile manifest, etc. Il est nécessaire de faire correspondre l'ordre des arguments suivants.
#Dans les ressources sous les fichiers d'entrée, ne refléter que la partie modifiée dans le fichier jar et mettre à jour
jar u[v0M]f jarfile [-C dir] inputfiles [-Joption]
#Seules les parties qui ont changé dans les ressources sous les fichiers d'entrée sont reflétées dans le fichier jar.
#Mettre à jour le manifeste(Ajouter ou supprimer des valeurs)
jar u[v0]mf manifest jarfile [-C dir] inputfiles [-Joption]
#Extraire tous les répertoires et fichiers du fichier jar(Dégivrer)Faire
#Si inputfiles est spécifié, la cible spécifiée et ci-dessous seront extraites.
jar x[v]f jarfile [inputfiles] [-Joption]
#Répertoriez tous les répertoires et fichiers dans le fichier jar
#Si inputfiles est spécifié, la liste sous la cible spécifiée s'affiche.
jar t[v]f jarfile [inputfiles] [-Joption]
#INDEX dans le fichier jar spécifié.Créer une liste
jar i jarfile [-Joption]
Voici la première structure de dossiers.
Spécifiez le fichier JAR (f), affichez les informations détaillées (v), Créez un nouveau fichier JAR appelé java-sample.jar (c).
#Le répertoire actuel est/java-échantillon
$ jar cvf java-sample.jar .
Manifeste ajouté
.DS_Le magasin est ajouté(Entrer=6148)(En dehors=411)(93%Rétréci)
lib/Est ajouté(Entrer=0)(En dehors=0)(0%Stockée)
lib/commons-lang3-3.10.Ajouter un pot(Entrer=523372)(En dehors=481881)(7%Rétréci)
src/Est ajouté(Entrer=0)(En dehors=0)(0%Stockée)
src/com/Est ajouté(Entrer=0)(En dehors=0)(0%Stockée)
src/com/example/Est ajouté(Entrer=0)(En dehors=0)(0%Stockée)
src/com/example/app/Est ajouté(Entrer=0)(En dehors=0)(0%Stockée)
src/com/example/app/UseCommons.Ajout de Java(Entrer=647)(En dehors=286)(55%Rétréci)
src/com/example/app/StrFactory.la classe est ajoutée(Entrer=308)(En dehors=234)(24%Rétréci)
src/com/example/app/UseCommons$CommonsHelper.la classe est ajoutée(Entrer=592)(En dehors=398)(32%Rétréci)
src/com/example/app/StrFactory.Ajout de Java(Entrer=115)(En dehors=101)(12%Rétréci)
src/com/example/app/UseCommons.la classe est ajoutée(Entrer=732)(En dehors=441)(39%Rétréci)
Un java-sample.jar sera créé dans le répertoire courant.
#Le répertoire actuel est/java-échantillon
$ jar tf java-sample.jar
META-INF/
META-INF/MANIFEST.MF
.DS_Store
lib/
lib/commons-lang3-3.10.jar
src/
src/com/
src/com/example/
src/com/example/app/
src/com/example/app/UseCommons.java
src/com/example/app/StrFactory.class
src/com/example/app/UseCommons$CommonsHelper.class
src/com/example/app/StrFactory.java
src/com/example/app/UseCommons.class
Si vous l'exécutez directement sous java-sample, les fichiers existants et les fichiers décompressés seront mélangés, donc Créez un dossier appelé décompresser et décompressez-le là.
#Le répertoire actuel est/décompresser
$ jar xf ../java-sample/java-sample.jar
Le résultat de la décompression du fichier JAR sera développé directement sous décompresser.
Recommended Posts