[JAVA] Créez un fichier jar avec la commande

Compilez du fichier Java à la classe avec toutes les commandes. Et créez un fichier Jar

Qu'est-ce qu'un fichier Jar?

Jar est expliqué ci-dessous sur le wiki. Jar ou Java Archive est un outil qui combine plusieurs codes d'octets Java compilés et des ressources telles que les images utilisées par eux en un seul, compressé au format Zip, et le produit. Cette chose.

Préparation

** Préparation du répertoire ** La structure de répertoires de Jar est la suivante, et créez un répertoire si nécessaire.

mkdir jar_compile01
cd jar_compile01
mkdir classes
mkdir -p src/com/demo
mkdir MATE-INFO

Dans le répertoire classes, les classes compilées sont générées ici. Le répertoire MATE-INFO contient des fichiers manifestes utilisés pour définir les extensions et les données relatives aux packages.

** Préparation du code source ** Créez un fichier Java sous src / com / demo.

# App.java
package com.demo;
public class App {
    public static void main(String[] arg) {
        System.out.println("Hello World!");
    }
}

** Préparation du fichier manifeste ** Créez un fichier manifeste sous MATE-INFO.

# MANIFEST.MF
Main-Class: com.demo.App

Compilation de classe

Compilez Java pour créer une classe.

javac -sourcepath src -d classes src/com/demo/App.java

Lorsque vous compilez, les classes seront créées dans le répertoire classes.

■ options javac </ font>

                         La description
-classpath Définissez le chemin de la classe d'utilisateurs et remplacez le chemin de la classe d'utilisateurs dans la variable d'environnement CLASSPATH. Avec CLASSPATH-Si aucun chemin de classe n'est spécifié, le chemin de classe de l'utilisateur sera le répertoire courant. Voir «Définition du chemin de classe» pour plus d'informations.
-sourcepath Si aucune option n'est spécifiée, le fichier source sera recherché par chemin de classe utilisateur ainsi que par fichier de classe.
-d directory Définissez le répertoire de destination de sortie pour les fichiers de classe. Si la classe fait partie d'un package, javac créera un répertoire selon les besoins et placera le fichier de classe dans un sous-répertoire qui reflète le nom du package. Par exemple-d ./Spécifiez les classes et le nom de la classe est com.demo.S'il s'agit d'une application, le fichier de classe est./classes/com/demo/App.Ce sera classe.
-Si d n'est pas spécifié, javac place le fichier de classe dans le même répertoire que le fichier source.
-Notez que le répertoire spécifié par d n'est pas automatiquement ajouté au chemin de la classe d'utilisateurs.
-encoding Nom de codage du fichier source(EUCJIS/SJIS etc.)Est spécifié.-Si l'encodage n'est pas spécifié, le convertisseur par défaut de la plate-forme est utilisé.
-g Génère toutes les informations de débogage, y compris les variables locales. Par défaut, seuls les numéros de ligne et les informations sur le fichier source sont générés.
-g:none Aucune information de débogage n'est générée.
-g:{keyword list} Génère uniquement certains types d'informations de débogage spécifiées par une liste de mots clés séparés par des virgules. Les mots clés suivants sont valides:
source Informations de débogage du fichier source
lines Informations de débogage du numéro de ligne
vars Informations de débogage des variables locales
-nowarn N'affichez pas de message d'avertissement.
-O Remarque: -L'option O ne fonctionne pas avec les implémentations actuelles de javac et oldjavac.
Optimisez votre code au moment de l'exécution.-La spécification de l'option O ralentit la compilation et augmente la taille des fichiers de classe créés, ce qui peut entraîner des programmes difficiles à déboguer.
Avant le SDK Java 2, javac-option g et-L'option O n'a pas pu être utilisée ensemble. SDK Java 2 v1.Dans 2, vous pouvez combiner ces options, mais avec le potentiel de conséquences inattendues telles que la perte de variables, le déplacement ou la perte de code.-Même si vous spécifiez l'option O-L'option depend est automatiquement activée ou-L'option g n'est plus automatiquement désactivée.
-sourcepath sourcepath Spécifie le chemin du code source pour rechercher des définitions de classe ou d'interface. Comme le chemin de la classe utilisateur, plusieurs entrées dans le chemin source sont des points-virgules.(;)Séparez avec. L'entrée du chemin source peut être un répertoire, une archive JAR ou une archive ZIP. Si vous utilisez un package, le chemin d'accès local dans le répertoire ou l'archive doit refléter le nom du package.
Si la source est trouvée, les classes trouvées dans le chemin de classe seront soumises à une recompilation automatique.
-verbose Spécifie la sortie redondante. Imprime des informations pour chaque classe chargée et le fichier source à compiler.

Créer un fichier Jar

Créez un fichier jar avec la commande jar.

jar cvfm app.jar MATE-INFO/MANIFEST.MF -C classes .
#Ce qui suit est l'affichage après l'exécution de la commande
Manifeste ajouté
com/Est ajouté(Entrer=0)(En dehors=0)(0%Stockée)
com/demo/Est ajouté(Entrer=0)(En dehors=0)(0%Stockée)
com/demo/App.la classe est ajoutée(Entrer=421)(En dehors=292)(30%Rétréci)

■ options de pot </ font>

option La description
-c Créer un nouveau fichier compressé
-t Afficher une liste de contenus
-x Décompression du fichier compressé
-u Mettre à jour le fichier jar
-v Afficher les détails du traitement sur la ligne de commande
-f Spécification du nom du fichier jar
-m Spécifiez le fichier manifeste
-i Créer des informations d'index
-o Ne compressez pas
-M Ne créez pas de fichier manifeste
-C Importez le fichier spécifié

Exécuter le fichier Jar

Vérifiez la structure du fichier Jar.

jar tf app.jar
#Ce qui suit est l'affichage après l'exécution de la commande
META-INF/
META-INF/MANIFEST.MF
com/
com/demo/
com/demo/App.class

Exécutez le fichier Jar.

java -jar app.jar
#Voici le résultat de l'exécution
Hello World!

■ options java </ font>

                              La description
-client Sélectionnez la machine virtuelle Java HotSpot Client. Ceci est le comportement par défaut.
-server Sélectionnez la machine virtuelle Java HotSpot Server.
-classpath
-cp
Spécifie une liste de répertoires, d'archives JAR et d'archives ZIP pour rechercher des fichiers de classe. Chaque entrée du chemin de classe est un deux-points(:)Séparez avec.
-classpath ou-Si vous spécifiez cp, les valeurs de ces options remplacent les paramètres de la variable d'environnement CLASSPATH.
-avec classpath-Si cp n'est pas utilisé et CLASSPATH n'est pas défini, le chemin de la classe utilisateur est le répertoire en cours.(.)Sera.
-Dproperty=value Définit la valeur des propriétés système.
-jar Exécutez le programme encapsulé dans le fichier JAR. Le premier argument est le nom du fichier JAR, pas le nom de la classe de démarrage. Pour que cette option fonctionne, le fichier manifeste JAR doit inclure «Main.-Class:Vous devez spécifier une ligne de la forme "classname".
Dans classname, public static void main qui fonctionne comme position de départ de l'application(String[] args)Spécifie la classe qui contient la méthode.
Pour plus d'informations sur les fichiers JAR et leurs manifestes, consultez la page Outils JAR et le didacticiel Java «Fichiers Jar». Avec cette option, le fichier JAR spécifié sera la source de toutes les classes d'utilisateurs et les autres paramètres de chemin de classe d'utilisateurs seront ignorés.
Sur Solaris 8,"java -jar"Un fichier JAR qui peut être exécuté avec des options détient un ensemble d'autorisations d'exécution. Pour cette raison,"java -jar"Il est également possible d'exécuter sans utiliser.
-verbose
-verbose:class
Affiche des informations sur la classe chaque fois qu'elle est chargée.
-verbose:gc Signaler chaque fois qu'un événement de garbage collection se produit.
-verbose:jni Méthodes natives et autre interface native Java(JNI)Signaler des informations sur l'utilisation de.
-version Affichez les informations de version et quittez.
-showversion Affichez les informations de version et continuez.
-?
-help
Afficher l'utilisation et quitter.

Recommended Posts