Fichier jar exécutable que d'ouvrir. Exécuter un fichier jar à partir de la ligne de commande

Je vais maintenant montrer comment exécuter un simple programme Java sans aucun environnement tel qu'un serveur d'applications. Une classe suffit, dans laquelle il sera défini méthode principale.

packagecom.blogspot ;
classe publique DeveloperRemarks (
public static void main (arguments de chaîne) (
si (args.length == 0) (
Système.out
.println("Passer en paramètre ligne de commande le texte que vous souhaitez voir.");
) autre (
System.out.println("Vous avez entré : " + args);
}
System.out.println("Source disponible sur Developer-remarks.blogspot.com");
}
}
Sur la ligne de commande, lors du démarrage du programme, vous devez transmettre le texte qui sera affiché à l'écran. Sinon, un message correspondant s'affichera. Tous les paramètres transmis au programme seront contenus dans le tableau de chaînes args que prend la méthode principale. Si aucun paramètre n'est passé, la longueur du tableau sera nulle.

Configurons maintenant Eclipse pour exécuter le fichier jar à partir du terminal. Pour ce faire, vous devez d'abord créer une configuration de lancement. Sélectionnez dans menu supérieur Exécuter - Exécuter les configurations. La fenêtre suivante s'ouvrira :

Dans la liste de gauche, sélectionnez le type d'application : Application Java. Créer là nouvelle configuration comme le montre la capture d'écran. Pour ce faire, sélectionnez le projet cible et la classe qui possède la méthode principale.

Nous sommes maintenant prêts à exporter notre projet dans un fichier jar lançable. Pour cela, cliquez sur le projet clic droit souris, sélectionnez "Exporter...", la fenêtre suivante s'ouvrira :


Dans la liste arborescente, sélectionnez le fichier Runnable Jar. La recherche peut être grandement simplifiée en filtrant le type de projet par nom. Cliquez sur Terminer. Après cela, une fenêtre pour les paramètres d'exportation s'ouvrira :


Dans celui-ci, sélectionnez la configuration de lancement créée précédemment. Précisez ensuite nom et prénom fichier jar. Dans la section "Gestion des bibliothèques", sélectionnez "Extraire les bibliothèques requises dans le JAR généré". bibliothèques requisesà l'intérieur de l'archive créée). Cliquez sur Terminer et l'archive exécutable sera créée.

Depuis dans dans cet exemple il n'y a aucune dépendance sur d'autres bibliothèques, alors nous sélectionnons le premier élément. Mais si nous avions plusieurs dizaines, voire centaines de dépendances, il serait plus correct de sélectionner le troisième élément « Copier les bibliothèques requises dans un sous-dossier à côté du JAR généré » (copier les bibliothèques requises dans un sous-répertoire, faisant partie du dont le nom coïncide avec l'archive en cours de création) pour éviter de gonfler le fichier exécutable. Si nous avions choisi la troisième option, les bibliothèques nécessaires auraient été copiées dans dossier séparé.

Ouvrez maintenant un terminal et accédez au répertoire où le fichier jar exécutable a été créé. Entrez la commande suivante :

java-jar Developer-remarks.jar bonjour\monde\!

De cette façon, vous dites à l'interpréteur Java d'exécuter notre archive. Veuillez noter que l'espace et point d'exclamation sur la ligne de commande doit être échappé avec une barre oblique inverse.

L'approche démontrée peut être utile à des fins éducatives et de test. Par exemple, pour créer un client qui appellera un EJB et affichera le résultat de son travail dans la console. Dignité cette approche consiste à lancer une archive jar sans aucun environnement. Il suffit d'avoir JDK/JRE. Les sources sont disponibles.

De nombreux programmeurs débutants sont confrontés à la question suivante : « J'ai créé mon application dans EDI Comment puis-je maintenant le faire fonctionner à partir de la ligne de commande en dehors de l'EDI ? » La question qui peut se poser est la suivante : « Comment puis-je distribuer cette application à d'autres utilisateurs sans leur donner l'intégralité de l'EDI en même temps ? »

Les réponses à ces questions sont relativement simples, mais pas toujours évidentes. DANS ce document Y répond en démontrant les bases de l'utilisation de l'EDI pour préparer les applications à la distribution et au déploiement. Ce document fournit également des informations dont le programmeur peut avoir besoin pour configurer le système (ou qui peuvent devoir être communiquées aux utilisateurs de l'application). Nous allons vous en montrer quelques-uns différentes approches pour déployer une application qui permet aux utilisateurs d'y accéder via :

  • Double-cliquez sur le fichier Java Archive (JAR) de l'application.
  • Appel de l'application depuis la ligne de commande.
  • Appel d'une application à partir d'un fichier script.
  • Utilisations JavaWeb Commencer.

Cette formation nécessite les logiciels et matériels répertoriés dans le tableau ci-dessous.

Création d'un fichier JAR exécutable

Dans cette partie cours de formation Montre comment créer une application prête à être distribuée dans l'EDI, puis exécuter cette application en dehors de l'EDI. Nous emballons cette application dans fichier exécutable POT.

Un fichier JAR est un fichier d'archive pouvant contenir des fichiers et des dossiers. Les fichiers JAR sont similaires aux fichiers ZIP, mais les fichiers JAR peuvent avoir attributs supplémentaires, utile dans la distribution Applications Java. Ces attributs incluent la signature numérique des fichiers JAR, une compression supplémentaire, la compatibilité multiplateforme, etc.

Dans cet exercice, nous créons un projet IDE puis plaçons deux fichiers pré-écrits dans ce projet code source Java. Nous compilerons ensuite les classes et créerons un fichier JAR exécutable. Après cela, nous verrons comment exécuter des fichiers JAR en dehors de l'EDI.

Cours utilisés dans ce manuel, implémenter des fonctions programme utilitaire GNU grep, qui peut être utilisé pour rechercher du texte ou des modèles expressions régulières V fichiers texte. Ce projet contient à la fois une version en ligne de commande de l'application et une version qui utilise Interface graphique, ce qui vous permettra de regarder diverses manières lancez l'application.

Créer un projet à l'aide de fichiers de code source existants

  1. Distribution de l'application à d'autres utilisateurs

    Maintenant que vous avez confirmé que votre application s'exécute en dehors de l'EDI, vous pouvez passer à sa distribution.

    Note. Si votre application dépend de bibliothèques supplémentaires autres que celles incluses dans le JDK, vous devez les inclure dans votre distribution (non applicable à cet exemple). Les chemins relatifs vers ces bibliothèques sont ajoutés à l’entrée classpath du fichier manifeste JAR lors du développement de l’application dans l’EDI. Si ces bibliothèques supplémentaires ne sera pas trouvé par chemin spécifié classe (c'est-à-dire chemin relatif) une fois lancée, l'application ne démarre pas.
    Créer Archives ZIP contenant le fichier JAR et la bibliothèque, puis postez ceci Fichier ZIP utilisateurs. Demandez aux utilisateurs d'extraire cette archive ZIP afin que le fichier JAR et les fichiers JAR de la bibliothèque se trouvent dans le même dossier. Lancez le fichier JAR de l'application.

    Exécuter une application Java

    Le but de cet exercice est de démontrer certaines des manières d'exécuter une application à partir de la ligne de commande.

    Cet exercice montre comment démarrer une application Java des deux manières suivantes :

    • Exécution de la commande Java à partir de la ligne de commande.
    • Utiliser un script pour appeler une classe dans un fichier JAR.

    Exécuter des applications à partir de la ligne de commande

    L'application peut être lancée depuis la ligne de commande à l'aide de la commande java. Si vous devez exécuter un fichier JAR exécutable, utilisez l'option -jar de la commande.

    Par exemple, pour lancer l'application AnotherGrep, vous devez procéder comme suit :

    1. Ouvrez une fenêtre de terminal. Sur les systèmes Microsoft Windows cela se fait en cliquant sur le bouton "Démarrer" et en sélectionnant "Exécuter...", entrée cmd dans le champ « Ouvrir : » et cliquez sur le bouton « OK ».
    2. Allez dans l'annuaire PROJECT_HOME/dist (en utilisant la commande cd).
    3. Entrer ligne suivante pour exécuter la classe d'application principale : java -jar AnotherGrep.jar

    Si vous suivez ces instructions et que l'application ne démarre pas, vous devriez probablement effectuer l'une des opérations suivantes : prochaines étapes:

    Exécuter des applications à partir d'un script

    Si l'application que vous souhaitez distribuer est application console, vous trouverez peut-être plus pratique de l'exécuter à partir d'un script, surtout si l'exécution de l'application nécessite des arguments longs et complexes. Dans cette section, nous utilisons la version console de Grep, où nous devons transmettre des arguments (modèle de recherche et liste de fichiers) au fichier JAR appelé dans notre script. Pour réduire la quantité de saisie en ligne de commande, nous utilisons un script simple adapté à l'exécution d'une application de test.

    Tout d'abord, vous devez remplacer la classe principale de l'application par la version console de la classe et reconstruire le fichier JAR :

    1. Dans la fenêtre Projets de l'EDI, cliquez avec le bouton droit sur le nœud du projet (AnotherGrep) et sélectionnez Propriétés.
    2. Sélectionnez le nœud Exécuter et remplacez la propriété Main Class par anothergrep.Grep (à partir de anothergrep.xGrep). Cliquez sur OK pour fermer la fenêtre Propriétés du projet.
    3. Cliquez à nouveau avec le bouton droit sur le nœud du projet et sélectionnez Nettoyer et créer le projet.

    Une fois ces étapes terminées, le fichier JAR sera reconstruit et l'attribut Main-Class dans le manifeste du fichier JAR pointera vers anothergrep.Grep .

    Script Bash - pour les ordinateurs UNIX et Linux

    Dans le dossier où le contenu du fichier a été extrait, vous pouvez trouver un script bash appelé grep.sh. Jetons-y un coup d'oeil :

    #!/bin/bash java -jar dist/AnotherGrep.jar $@

    La première ligne spécifie quel interpréteur de commandes doit être utilisé pour interpréter ce script. Le second exécute le fichier JAR créé par l'IDE dans le dossier PROJECT_HOME/dist. $@ copie simplement tous les arguments passés au script, en les mettant chacun entre guillemets.

    Ce scénario implique que fichiers binaires Java fait partie variable d'environnement CHEMIN. Si ce script ne fonctionne pas sur votre ordinateur, consultez.

    Plus d'informations sur l'écriture de scripts pour interprète bash peut être trouvé.

    Script.bat pour les ordinateurs Windows

    Sur Ordinateurs Microsoft Lot Windows Un maximum de neuf arguments peuvent être transmis aux fichiers à la fois. S'il y a plus de neuf arguments, le fichier JAR devra être exécuté plusieurs fois.

    Le script pour cela pourrait ressembler à ceci :

    @echo off set jarpath="dist/AnotherGrep.jar" set pattern="%1" shift:loop if "%1" == "" goto:allprocessed set files=%1 %2 %3 %4 %5 %6 %7 %8 %9 java -jar %jarpath% %pattern% %files% pour %%i dans (0 1 2 3 4 5 6 7 8) do shift goto:loop:allprocessed

    Ce script se trouve sous le nom grep.bat dans le dossier où le contenu de l'archive a été extrait si vous souhaitez le voir en action.

    Neuf arguments sont présentés à l'intérieur fichier de commandes Comment % , Où doit avoir une valeur dans<0-9>. %0 est réservé pour le nom du script.

    Vous pouvez voir que seuls neuf arguments sont transmis au programme à la fois (en une seule boucle). L'instruction for décale simplement les arguments de neuf pour les préparer à la boucle suivante. La boucle se termine lorsque l'instruction if rencontre un argument de fichier vide (cela indique qu'il n'y a pas de nouveaux fichiers à traiter).

    Pour plus d'informations sur les scripts batch, consultez .

    Empaqueter une application pour Java Web Start

    Java Web Start est une technologie utilisée pour lancer des applications Java depuis un navigateur Web en un seul clic. Pour plus de détails sur l'empaquetage d'applications pour le déploiement à l'aide de Java Web Start, consultez Activer Java Web Start dans l'EDI NetBeans. Nous présentons ici uniquement brève descriptionétapes requises pour rendre l'application déployable avec utiliser Java Démarrage Web.

    1. Cliquez avec le bouton droit sur le nœud du projet dans la fenêtre Projets et sélectionnez Propriétés.
    2. Sous l’onglet Web Start de la fenêtre Propriétés du projet, cochez la case Activer Web Start.
    3. Sélectionnez Exécution locale dans la liste déroulante Base de code (" Base de code") puisque nous testerons uniquement l'exécution locale.
      Conservez tous les autres paramètres par défaut et cliquez sur OK.
    4. Cliquez avec le bouton droit sur le nœud du projet et sélectionnez Nettoyer et créer le projet.
      Cette commande L'IDE supprimera tous les fichiers précédemment compilés et construira les résultats, compilera à nouveau l'application et construira le projet avec les nouveaux paramètres.
    5. En dehors de l'EDI, ouvrez le dossier PROJECT_HOME/dist puis ouvrez le fichier launch.html dans votre navigateur.
      Un écran de test apparaîtra. Page HTML avec le bouton Lancer.
    6. Cliquez sur le bouton Lancer pour ouvrir l'application.
      Vous verrez que Java est chargé et que l'application est en cours d'exécution.

      Note. Certains navigateurs redirigent d'abord les utilisateurs vers la page Téléchargements Java.

    Spécification des associations de fichiers JAR

    Sur la plupart des ordinateurs, un fichier JAR exécutable peut être exécuté en double-cliquant simplement dessus. Si rien ne se passe lorsque vous double-cliquez sur un fichier JAR, cela peut être dû à l'une des deux causes suivantes : les raisons suivantes:

    • Le type de fichier JAR n'est pas associé à l'environnement Exécution Java(JRE) sur cet ordinateur.

      Si le type de fichier JAR est mappé à JRE, l'icône représentant ce fichier doit inclure le logo Java.

    • Le type de fichier JAR est mappé au JRE, mais le paramètre -jar ne fait pas partie de la commande transmise au JRE lorsque vous double-cliquez sur l'icône.

    Note. Parfois, les associations de fichiers JAR sont modifiées par le logiciel installé, par ex. logiciel pour le traitement des fichiers au format zip.

    La manière dont un type de fichier JAR peut être associé à un outil lancer Java, dépend du système d'exploitation.

    Assurez-vous que l'une des versions de JRE est installée sur votre ordinateur. La version 1.4.2 ou ultérieure doit être utilisée. Les applications Java ne peuvent pas être exécutées sur des ordinateurs qui ne disposent pas du Plateforme Java. (Si vous installez le kit de développement sur Langage Java(JDK), le JRE est également installé avec. Cependant, si le programme est distribué à des personnes autres que des programmeurs, les utilisateurs risquent de ne pas disposer du JRE ou du JDK.)

    • Sous Windows XP version installée Java peut être vérifié en sélectionnant « Démarrer » > « Panneau de configuration » > (Ajout ou suppression de programmes) (par exemple, Java(TM) 6 Update 33 doit y être répertorié).
    • Sur Windows Vista ou 7 installés Version Java Vous pouvez vérifier en sélectionnant « Démarrer » > « Panneau de configuration » > (« Programmes et fonctionnalités ») (par exemple, Java(TM) 6 Update 33 devrait y être répertorié).

    Si votre ordinateur ne dispose pas de la plateforme Java, le JRE peut être téléchargé à partir du site de téléchargement Java SE.

    Si vous l'avez déjà sur votre ordinateur, mais que l'association de fichiers ne fonctionne pas, suivez ces étapes pour ajouter une association de fichiers JAR dans Microsoft Windows :

    1. Sélectionnez Démarrer > Panneau de configuration.
    2. (Applicable à Windows Vista uniquement). Cliquez sur Panneau de configuration > Programmes.

    3. Pour Windows Vista ou 7, cliquez sur « Programmes par défaut » et sélectionnez « Associer un type de fichier ou un protocole à un programme ».
    4. (Sous Windows XP, dans la section Détails de la boîte de dialogue, cliquez sur Modifier le programme.)
    5. Dans la boîte de dialogue Sélectionner un programme, sélectionnez Plateforme Java SE Binaire.
    6. Cliquez sur OK pour quitter la boîte de dialogue Sélectionner un programme.
    7. Cliquez sur Fermer pour fermer la boîte de dialogue Options des dossiers (sous Windows XP) ou la boîte de dialogue Associer un type de fichier ou un protocole. programmes spécifiques(sous Windows 7).

    Note. Si les fichiers JAR sont associés à Java Platform SE Binary sur le système, mais double-cliquez n'exécute toujours pas le fichier JAR, peut nécessiter la spécification du paramètre -jar dans l'association de fichier.

    Pour spécifier l'option -jar dans une association de fichiers sous Microsoft Windows XP, procédez comme suit :

    1. Sélectionnez Démarrer > Panneau de configuration.
    2. Sous Windows XP, double-cliquez sur Options des dossiers et sélectionnez l'onglet Types de fichiers.
    3. Dans la liste Types de fichiers enregistrés, sélectionnez le fichier JAR.
    4. Dans la section Détails de la boîte de dialogue, cliquez sur Avancé.
    5. Dans la boîte de dialogue Modifier les propriétés du type de fichier, cliquez sur Modifier....
    6. Dans la zone de texte « Application exécutant l'action », ajoutez la ligne suivante à la fin du chemin JRE : -jar "%1" %* Le champ doit alors contenir un texte similaire au suivant : "C:\Program Files\Java \jre1.6.0_33\ bin\javaw.exe" -jar "%1" %*
    7. Cliquez sur OK pour quitter la boîte de dialogue Modifier le type d'action.
    8. Cliquez sur OK pour quitter la boîte de dialogue Modifier les propriétés du type de fichier.
    9. Cliquez sur Fermer pour quitter la boîte de dialogue Options des dossiers.

    Note.À partir de Windows Vista, les associations de fichiers étendues peuvent être configurées à l'aide de RegEdit. Pour plus d’informations, consultez Qu’est-il arrivé à la boîte de dialogue Types de fichiers ? .

    Pour les systèmes UNIX et Linux, la procédure de modification des associations de fichiers dépend de l'environnement de bureau (tel que GNOME ou KDE) que vous utilisez. Regarde tes paramètres environnement de travail ou consultez la documentation de votre atelier.

    Définition de la variable d'environnement PATH

    Si votre ordinateur ne peut pas fonctionner Classe Java ou JAR sans spécifier l'emplacement du JDK ou du JRE, vous devrez peut-être modifier la valeur de la variable d'environnement système PATH.

    Lorsqu'on travaille dans Système Microsoft Procédure Windows Le paramètre de la variable PATH dépend de la version de Windows que vous utilisez.

    Voici les étapes pour définir la variable PATH sur Système Windows XP :

    1. Choisissez Démarrer > Panneau de configuration et double-cliquez sur Système.
    2. Dans la boîte de dialogue Propriétés système, sélectionnez l'onglet Avancé.
    3. Cliquez sur l'onglet Variables d'environnement.
    4. Dans la liste des variables d'environnement utilisateur, sélectionnez PATH et cliquez sur le bouton Modifier.
    5. Ajoutez l'emplacement JRE à la fin de la liste des chemins. Les emplacements de la liste sont séparés par des points-virgules (;).
      Par exemple, si le JRE se trouve dans C:\Program Files\Java\jdk1.6.0_23, vous ajouterez ce qui suit à la fin de la variable PATH : C:\Program Files\Java\jdk1.6.0_23\bin
    6. Cliquez sur OK pour quitter la boîte de dialogue Variables d'environnement, puis cliquez sur OK pour quitter la boîte de dialogue Propriétés système.

    Lorsque vous travaillez en salle d’opération Système UNIX ou Façon Linux Les modifications apportées à la variable d'environnement PATH dépendent du programme interpréteur de commandes que vous utilisez. Consultez la documentation de l’interpréteur de commandes pour plus d’informations.

    Quelle est la prochaine étape ?

    Pour plus d'informations sur l'utilisation de l'EDI NetBeans, consultez le site Web NetBeans.

    Plus d'informations sur le développement d'applications Java dans un IDE, y compris la gestion du chemin de classe, sont disponibles dans le document

De nos jours, plus personne ne crée de programmes dans la console. En utilisant son IDE favori, un développeur se sent mal à l’aise sur l’ordinateur de quelqu’un d’autre là où il n’est pas là.
Ayant décidé de comprendre le travail d'Ant et de Maven, j'ai réalisé que je ne pouvais pas créer d'application sans eux dans la console.
Dans cet article, j'ai essayé de couvrir toutes les étapes de conception d'une application de démonstration, afin de ne pas chercher d'aide sur chaque commande sur Internet.

Du simple au...

Chaque programme est généralement contenu dans un répertoire distinct. J'adhère à la règle de créer dans ce répertoire en au moins deux dossiers : src et bin. Le premier contient les codes sources, le second contient le résultat de la compilation. Ces dossiers auront une structure de répertoires en fonction des packages.

Un fichier

Vous pouvez le faire sans dossiers supplémentaires.
Prenons le fichier lui-même.
01 02 03 04 05 06 07 08 09 public class HelloWorld ( public static void main(String args) ( System.out.println(" Bonjour le monde!"); Calculatrice calc=new Calculatrice(); System.out.println("2+2="+calc.sum(2,2)); ) )
Allez dans le répertoire où il se trouve ce fichier et exécutez les commandes.
javac HelloWorld.java Le fichier HelloWorld.class apparaîtra dans ce dossier. Cela signifie que le programme a été compilé. Pour courir
chemin de classe Java. Bonjour le monde

Séparer les fichiers binaires des sources

Nous allons maintenant faire la même chose, mais avec des catalogues. Créons un répertoire HelloWorld et y mettons deux dossiers src et bin.
Compilation
javac -d bin src/HelloWorld.java Nous avons spécifié ici que fichiers binaires sera enregistré dans un dossier séparé dossier poubelle et ne vous trompez pas avec les sources.

Lançons
java -classpath ./bin HelloWorld

Nous utilisons des forfaits

Sinon, tout à coup, le programme cessera d'être simplement HelloWorld. Il est préférable de donner des colis clairs et nom unique. Cela ajoutera ce programme vers un autre projet sans conflit de nom. Après avoir lu certains articles, vous pourriez penser qu’un nom de package a définitivement besoin d’un domaine. C'est faux. Les domaines sont moyen pratique atteindre l'unicité. Si vous ne possédez pas votre propre domaine, utilisez un compte sur le site Web (par exemple, ru.habrahabr.mylogin). Ce sera unique. Veuillez noter que les noms de packages doivent être en minuscules. Et évitez d'utiliser des caractères spéciaux. Des problèmes surviennent en raison de différentes plateformes et les systèmes de fichiers.

Mettons notre classe dans un package appelé com.qwertovsky.helloworld. Pour cela, ajoutez la ligne au début du fichier
paquet com.qwertovsky.helloworld ;
Compilation
Créons des répertoires supplémentaires dans le répertoire src pour que le chemin d'accès au fichier ressemble à ceci : src/com/qwertovsky/helloworld/HelloWorld.java.
javac -d bin src/com/qwertovsky/helloworld/HelloWorld.java Le répertoire bin créera automatiquement une structure de répertoires similaire à src.
HelloWorld "---bin " "---com " "---qwertovsky " "---helloworld " "---HelloWorld.class "---src "---com "---qwertovsky "-- -helloworld "---Lancement de HelloWorld.java

java -classpath ./bin com.qwertovsky.helloworld.HelloWorld

S'il y a plusieurs fichiers dans le programme
Changeons le programme. Ne faites pas attention à la logique. Elle est partie.
01 02 03 04 05 06 07 08 09 10 11 12 13 BonjourMonde.java
paquet com.qwertovsky.helloworld ; public class HelloWorld ( public static void main(String args) ( int a=2; int b=3; Calculatrice calc=new Calculatrice(); System.out.println("Hello World!"); System.out.println( a+"+"+b+"="+calc.sum(a,b));
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 Calculatrice.java
paquet com.qwertovsky.helloworld ; importer com.qwertovsky.helloworld.opération.Adder; public class Calculatrice ( public int sum(int... a) ( Adder adder=new Adder(); for(int i:a) ( adder.add(i); ) return adder.getSum(); ) )
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 Adder.java
paquet com.qwertovsky.helloworld.operation; public class Adder ( private int sum; public Adder() ( sum=0; ) public Adder(int a) ( this.sum=a; ) public void add(int b) ( sum+=b; ) public int getSum() ( retourner la somme ; ) )
javac -d bin src/com/qwertovsky/helloworld/HelloWorld.java src\com\qwertovsky\helloworld\HelloWorld.java:9 : symbole introuvable symbole : classe Emplacement de la calculatrice : classe com.qwertovsky.helloworld.HelloWorld Calculatrice calc=new Calculatrice();
Compilation
^ src\com\qwertovsky\helloworld\HelloWorld.java:9 : symbole introuvable symbole : classe Emplacement de la calculatrice : classe com.qwertovsky.helloworld.HelloWorld Calculatrice calc=new Calculatrice();
^2 erreurs L'erreur est due au fait que la compilation nécessite des fichiers avec les codes sources des classes utilisées (la classe Calculatrice). Vous devez spécifier le répertoire contenant les fichiers au compilateur à l'aide du commutateur -sourcepath.

javac -sourcepath ./src -d bin src/com/qwertovsky/helloworld/HelloWorld.java Lancement

java -classpath ./bin com.qwertovsky.helloworld.HelloWorld Bonjour Word 2+3=5
Si le résultat surprend
Il est possible de lancer le débogueur. C'est à cela que sert jdb.
Tout d’abord, nous compilons avec le commutateur -g pour que le débogueur dispose d’informations. javac -g -sourcepath ./src -d bin src/com/qwertovsky/helloworld/HelloWorld.java Lancer le débogueur jdb -classpath bin -sourcepath src com.qwertovsky.helloworld.HelloWorld Initialisation de jdb ... > Le débogueur démarre son
terminal domestique
pour saisir des commandes. L'aide sur ce dernier peut être affichée à l'aide de la commande help.
Spécifiez un point d'arrêt à la ligne 9 dans la classe Calculatrice > arrêter à com.qwertovsky.helloworld.Calculator:9 Différer le point d'arrêt com.qwertovsky.helloworld.Calculator:9. Il sera défini une fois la classe chargée.
Commençons l'exécution.
> exécuter exécuter com.qwertovsky.helloworld.HelloWorld Définir un java.lang.Throwable non capturé Définir java.lang.Throwable différé non capturé > VM démarrée : définir un point d'arrêt différé com.qwertovsky.helloworld.Calculator:9 Bonjour tout le monde !
main cont > Définir le point d'arrêt différé com.qwertovsky.helloworld.operation.Adder:19 Point d'arrêt atteint : "thread=main", com.qwertovsky.helloworld.operation.Adder.add(), line=19 bci=0 19 sum+=b ; liste principale 15 ) 16 17 public void add(int b) 18 ( 19 => sum+=b; 20 ) 21 22 public int getSum() 23 ( 24 return sum; main print sum sum = 0 main print b b = 2 Exécuter le codeV ligne actuelle
et nous verrons que la somme devient égale à 2.
étape principale > Étape terminée : "thread=main", com.qwertovsky.helloworld.operation.Adder.add(), line=20 bci=10 20 ) main print sum sum = 2 Passons de la classe Adder à la Calculatrice classe qui l'a appelé.
étape principale > Étape terminée : "thread=main", com.qwertovsky.helloworld.Calculator.sum(), line=10 bci=36 10 for(int i:a) Supprimer le point d'arrêt
principal clair com.qwertovsky.helloworld.operation.Adder:19 Supprimé : point d'arrêt com.qwertovsky.helloworld.operation.Adder:19 étape principale > Étape terminée : "thread=main", com.qwertovsky.helloworld.Calculator.sum() , ligne=12 bci=30 12 adder.add(i);
Vous pouvez éviter d'entrer dans les méthodes en utilisant la commande suivante.

main next > Étape terminée : "thread=main", com.qwertovsky.helloworld.Calculator.sum(), line=10 bci=36 10 for(int i:a) main next > Étape terminée : "thread=main", com.qwertovsky.helloworld.Calculator.sum(), line=14 bci=42 14 return adder.getSum();

Nous vérifions la valeur de l'expression et terminons l'exécution.
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 main eval adder.getSum() adder.getSum() = 5 main cont > 2+3=5 L'application s'est arrêtée ce serait bien de tester
paquet com.qwertovsky.helloworld.operation; public class Adder ( private int sum; public Adder() ( sum=0; ) public Adder(int a) ( this.sum=a; ) public void add(int b) ( sum+=b; ) public int getSum() ( retourner la somme ; ) )
mkdir test_bin javac -classpath lib/path/junit-4.8.2.jar -sourcepath ./src -d test_bin test/com/qwertovsky/helloworld/TestCalculator.java Lancement. « ; » est utilisé comme séparateur pour plusieurs chemins dans le chemin de classe sous Windows et « : » sous Linux. Les deux séparateurs ne fonctionnent pas dans la console Cygwin. Peut-être que ";" devrait fonctionner, mais il est traité comme un séparateur de commandes.
java -classpath lib/path/junit-4.8.2.jar:./test_bin org.junit.runner.JUnitCore com.qwertovsky.helloworld.TestCalculator JUnit version 4.8.2 .... Temps : 0,031 OK (4 tests)

Créons une bibliothèque

La classe Calculatrice s’est avérée utile et peut être utilisée dans de nombreux projets. Déplaçons tout ce qui concerne la classe Calculatrice vers un projet distinct.
HelloWorld "---bin "---src "---com "---qwertovsky "---helloworld "---HelloWorld.java Calculatrice "---bin "---src " "---com " "---qwertovsky " "---calculatrice " "---Calculator.java " "---opération " "---Adder.java "---test "---com "---qwertovsky " ---calculator "---TestCalculator.java Modifiez également les noms des packages dans textes sources. Vous devrez ajouter la ligne à HelloWorld.java
importer com.qwertovsky.calculator.Calculator;
Compilons.
cd Calculator javac -sourcepath src -d bin src/com/qwertovsky/calculator/Calculator.java Créer une archive jar

jar cvf calculator.jar -C bin .

ajout du manifeste en ajoutant : com/(in = 0) (out= 0)(stocké 0 %) en ajoutant : com/qwertovsky/(in = 0) (out= 0)(stocké 0 %) en ajoutant : com/qwertovsky/calculator/ (in = 0) (out= 0)(stocké 0 %) en ajoutant : com/qwertovsky/calculator/Calculator.class(in = 497) (out= 373)(dégonflé 24 %) en ajoutant : com/qwertovsky/calculator/operation /(in = 0) (out= 0)(stocké 0%) en ajoutant : com/qwertovsky/calculator/operation/Adder.class(in = 441) (out= 299)(dégonflé 32%) En utilisant le commutateur -C, nous lancé le programme dans le répertoire bin.
Nous devons découvrir ce qu'il y a à l'intérieur de la bibliothèque
Vous pouvez décompresser l'archive avec un décompresseur zip et voir quelles classes se trouvent dans la bibliothèque. Des informations sur n'importe quelle classe peuvent être obtenues à l'aide du désassembleur Javap. ":()V 7 : astore_2 8 : aload_1 9 : astore_3 10 : aload_3 11 : longueur de tableau 12 : istore 4 14 : iconst_0 15 : istore 5 17 : iload 5 19 : iload 4 21 : if_icmpge 42 24 : aload_3 25 : iload 5 27 : iaload 28 : istore 6 30 : aload_2 31 : iload 6 33 : invokevirtual #4 ; //Méthode com/qwertovsky/calculator/operation/Adder.add:(I)V 36 : iinc 5, 1 39 : goto 17 42 : aload_2 43: Invokevirtual #5; //Method com/qwertovsky/calculator/operation/Adder.getSum:()I 46: ireturn ) D'après le résultat, il est clair que la classe contient, en plus d'un constructeur vide, une autre somme méthode, à l'intérieur de laquelle dans une boucle La méthode add de la classe Adder est appelée. Lorsque la méthode sum est terminée, Adder.getSum() est appelée.
Sans le commutateur -c, le programme ne produira qu'une liste de variables et de méthodes (si vous utilisez -private, alors toutes).
javap -private -classpath calculator.jar com.qwertovsky.calculator.operation.Adder Compilé à partir de la classe publique "Adder.java" com.qwertovsky.calculator.operation.Adder étend java.lang.Object (private int sum; public com.qwertovsky .calculateur.opération.Adder(); public com.qwertovsky.calculateur.opération.Adder(int); public void add(int);

Il est préférable de fournir de la documentation à la bibliothèque

Changeons la classe de calculatrice pour cela.
La documentation peut être créée commande suivante. S'il y a une erreur, le programme affichera une liste options possibles.
mkdir doc javadoc -d doc -charset utf-8 -sourcepath src -author -subpackages com.qwertovsky.calculator Le résultat est le suivant

Vous pouvez signer l'archive du pot

Si vous devez signer votre bibliothèque signature numérique, keytool et jarsigner viendront à la rescousse.
Générer une signature.
keytool -genkey -keyalg rsa -keysize 2048 -alias qwertokey -keystore path/to/qwerto.keystore Saisir le mot de passe du keystore : Saisissez à nouveau le nouveau mot de passe : Quels sont votre prénom et votre nom ? : Valery Qwertovsky Quel est le nom de votre unité organisationnelle ?: Qwertovsky Quel est le nom de votre organisation ? : Qwertovsky Quel est le nom de votre ville ou localité ?
: Tver Quel est le nom de votre État ou Province ?
keytool -certreq -file path/to/qwertokey.crt -alias qwertokey -keystore path/to/qwerto.keystore Le contenu du fichier reçu est envoyé à l'autorité de certification. Nous recevons un certificat de l'autorité de certification. Enregistrez-le dans un fichier (par exemple, qwertokey.cer) et importez-le dans le stockage
keytool -import -trustcacerts -keystore chemin/vers/qwert.keystore -alias qwertokey -file chemin/vers/qwertokey.cer Signer l'archive jar
jarsigner -keystore chemin/vers/qwerto.keystore calculator.jar qwertokey Le fichier qwertokey.cer est envoyé à tous ceux qui souhaitent vérifier l'archive. C'est vérifié comme ça
jarsigner -verify -verbose -certs -keystore chemin/vers/qwerto.keystore calculator.jar

Utiliser la bibliothèque

Il existe un programme HelloWorld qui utilise la classe de bibliothèque Calculator. Pour compiler et exécuter le programme, vous devez inclure la bibliothèque.
Compilation
cd HelloWorld javac -sourcepath src -d bin -classpath path/to/calculator.jar src/com/qwertovsky/helloworld/HelloWorld.java Lancement
java -classpath bin:chemin/vers/calculateur.jar com.qwertovsky.helloworld.HelloWorld

Mettre en place le programme

Cela peut être fait de différentes manières.

Première façon

cd HelloWorld echo classe principale : com.qwertovsky.helloworld.HelloWorld>manifest.mf echo class-path : lib/calculator.jar >>manifest.mf mkdir lib cp path/to/calculator.jar lib/calculator.jar jar - cmf manifest.mf helloworld.jar -C bin .
Il y a des subtilités ici.
En ligne
classe principale : com.qwertovsky.helloworld.HelloWorld ne doit pas avoir d'espaces de fin.
La deuxième subtilité est décrite dans : dans la même ligne, il devrait y avoir un saut vers la ligne suivante. C'est le cas si le manifeste est archivé par un archiveur tiers. programme de pot
n'inclura pas la dernière ligne du manifeste dans le manifeste à moins qu'il n'y ait un saut de ligne à la fin. Autre point : le manifeste ne doit pas contenir lignes vides

entre les lignes. L'erreur "java.io.IOException : format de manifeste non valide" sera générée.

Lorsque vous utilisez la commande echo, il vous suffit de surveiller l'espace à la fin de la ligne de la classe principale.

Deuxième façon cd HelloWorld echo chemin de classe : lib/calculator.jar >manifest.mf mkdir lib cp path/to/calculator.jar lib/calculator.jar jar -cmef manifest.mf com.qwertovsky.helloworld.HelloWorld helloworld.jar -C bin . DANS

cette méthode

cd HelloWorld mkdir lib cd lib jar -xvf chemin/vers/calculator.jar com/ créé : com/ créé : com/qwertovsky/ créé : com/qwertovsky/calculator/ gonflé : com/qwertovsky/calculator/Calculator.class créé : com /qwertovsky/calculator/operation/ gonflé : com/qwertovsky/calculator/operation/Adder.class cd .. cp -r bin/* lib/ jar -cef com.qwertovsky.helloworld.HelloWorld helloworld.jar -C lib .

rm -r lib Inclus le code de la bibliothèque requise dans le fichier exécutable.

Exécuter le fichier jar exécutable
Le fichier calculator.jar n’est pas exécutable. Mais helloworld.jar peut être lancé.
Si l'archive a été créée à l'aide des deux premières méthodes, à côté d'elle, dans le même répertoire, il devrait y avoir un dossier lib avec le fichier calculator.jar. De telles restrictions sont dues au fait que le chemin de classe dans le manifeste spécifie le chemin relatif au fichier exécutable. cd Calculator ls ../HelloWorld/lib calculator.jar java -jar ../HelloWorld/helloworld.jar Lors de l'utilisation de la troisième méthode bibliothèques requises
inclus dans le fichier exécutable. Il n’est pas nécessaire de conserver les bibliothèques nécessaires à proximité. Cela commence de la même manière.

java -jar ../HelloWorld/helloworld.jar

Que faire avec les applications JavaEE
De même. Seules les bibliothèques à compiler doivent être extraites du serveur d'applications utilisé. Si j'utilise JBoss, pour compiler le servlet, je devrais faire quelque chose comme ce qui suit
javac -classpath chemin/vers/jboss/common/lib/jboss-servlet*.jar -d ./classes src/com/qwertovsky/app/servlets/MenuSt.java
La structure d'archive d'une application JavaEE doit suivre un format spécifique. Par exemple<остальное веб-содержимое (страницы, изображения)>mon.oreille `---META-INF | `---manifest.mf `---lib | `---mylib.jar `---my.war | `---META-INF | | `---manifest.mf | `---WEB-INF | | `---lib | | | `---myweblib.jar | | `---cours | | | `---com | | | `---... | | `---web.xml | `---index.html | `---
`---myejb.jar

Les méthodes d'exécution de l'application sur le serveur lui-même à l'aide de la ligne de commande sont différentes pour chaque serveur.



Des questions ?

Signaler une faute de frappe

Texte qui sera envoyé à nos rédacteurs :