Compilez et exécutez Java sur la ligne de commande

introduction Cet article est un compte rendu de ce que je comprends pour ceux qui étudient Java.

Les fonctions Java et les méthodes de description sont décrites dans la liste suivante.

Cependant, dans cet article, en dehors de la liste, je décrirai l'exécution sur la ligne de commande qui a été effectuée dans l'article.

Qu'est-ce qu'une ligne de commande

Quand j'ai entendu ce mot pour la première fois, je ne l'ai pas compris, mais il semble que la ligne affichée dans l'invite de commande dans Windows et le terminal sous mac s'appelle la ligne de commande. Dans cet article, je vais supposer que Java est installé et essayer d'exécuter Java à partir du terminal mac et de l'invite de commande Windows. Il y a aussi un article que j'ai mentionné plus tôt sur la construction de l'environnement, j'espère donc que vous pourrez vous y référer. Environnement de développement Java

J'ai du code à compiler, j'ai donc créé Hello World.

class Test{
    public static void main(String args[]){
        System.out.println("Hello World!");
    }
}

Il s'agit de la première déclaration Hello World qui apparaît souvent lors de l'apprentissage d'un programme. Un code simple qui produit Hello World.

compiler

Compilons le code ci-dessus. À propos, la compilation consiste simplement à réécrire le code écrit en une phrase qui peut être lue par un ordinateur.

$javac fichier java que vous voulez compiler

Compilez test.java avec le code ci-dessus dans le dossier de test.

test$ javac test.java

Cette commande charge test.java, vérifie les classes dans le code et génère un fichier de classe. En passant, s'il y a plusieurs classes dans le fichier java, tous les fichiers de classe seront générés.

class Test{
    public static void main(String args[]){
        System.out.println("Hello World!");
    }
}

class Sample{}

class Mikan{}

J'ai créé une classe Sample et une classe Mikan, mais rien n'y est décrit. Compilez ce code.

test$ javac test.java

Vous avez maintenant généré trois fichiers de classe: Test.class, Sample.class et Mikan.class.

Courir

$nom du fichier de classe java que vous souhaitez exécuter

Cette commande s'exécute dans la méthode principale de la classe. Entrons ce qui précède à l'invite de commande (terminal).

test$ java Test

Le résultat est

Hello World!

L'instruction de sortie de la méthode principale de la classe Test s'affiche.

C'est tout pour exécuter à l'invite de commande (terminal), mais il y a une chose à garder à l'esprit.

Comme il est exécuté dans la méthode main, une erreur se produira même si la compilation réussit sans la méthode main.

class Test{}

Je compile ce code, mais je peux générer un fichier de classe (Test.class) sans erreur.

test$ javac test.java

Exécutons-le avec le fichier créé.

test$ java Test

J'ai eu une erreur lorsque je l'ai exécuté.

Erreur:La méthode principale est introuvable dans la classe Test. Définissez la méthode principale comme suit:
   public static void main(String[] args)

N'oubliez pas que la classe que vous exécutez nécessite une méthode principale.

Exécution du débogage

Vous pouvez également déboguer sur la ligne de commande. Pour faire simple, l'exécution du débogage consiste à vérifier le fonctionnement du programme implémenté. Faisons-le en fait sur la ligne de commande.

test.java

class Main{
    int instans = 60;
    static int global = 95;

    static void debug(){
        System.out.println();
        System.out.println("Exécution du débogage");
    }

    void print(){
        System.out.println("print()");
    }

    public static void main(String args[]){
        Main.debug();
        System.out.println("main start");

        int x = 50;

        String str = "Type de caractère";

        Main m = new Main();

        x = 100;

        str = "Conversion de type de caractère";

        m.print();

        System.out.println("main end");
    }
}

Compilez le fichier java décrit ci-dessus, mais il y a certaines choses à prendre en compte lorsque vous voulez exécuter le débogage.

$ javac -g test.java

Définissons -g comme une option de compilation. Vous pouvez maintenant utiliser la fonction de débogage JDK intégrée appelée jdb. Commençons jdb à la fois.

$ jdb Main
> 

Vous pouvez déboguer en tapant diverses commandes sur la flèche ci-dessus, mais d'abord vous ne pouvez rien faire à moins de l'exécuter, alors mettons la commande run. Maintenant, vm fonctionne.

> run
VM démarrée: 
Exécution du débogage
main start
print()
main end

Cependant, avec la commande run seule, jdb sera arrêté simplement en l'exécutant. Par conséquent, définissez un point d'arrêt à l'avance. Un point d'arrêt est un endroit où l'opération s'arrête pendant l'exécution, et vous pouvez spécifier cet endroit avec une commande.

> stop in Main.debug

Je pense que l'état d'entrée de la commande sera entré lorsque la méthode de débogage exécutée dans la méthode principale commencera à fonctionner. Exécutons-le réellement.

> run
VM démarrée:Point d'arrêt retardé principal.paramètres de débogage

Hit point de rupture: "fil=main", Main.debug(),ligne=8 bci=0
8            System.out.println();
main[1] 

Cet état indique que le programme est arrêté à cet emplacement. Pour un examen plus approfondi, utilisons la liste des commandes de confirmation de l'emplacement d'exécution.

main[1] list
4        int instans = 60;
5        static int global = 95;
6    
7        static void debug(){
8 =>         System.out.println();
9            System.out.println("Exécution du débogage");
10        }
11    
12        void print(){
13            System.out.println("print()");

Il sera affiché. Je pense qu'il est plus facile de voir qu'il est arrêté à la sortie de la méthode de débogage.

Exécution par étapes

Continuons avec le programme qui est arrêté par le code ci-dessus. Cette étape vous permettra de parcourir le code ligne par ligne. Continuons avec ce qui précède.

step
Étape terminée: "fil=main", Main.debug(),ligne=9 bci=6
9            System.out.println("Exécution du débogage");

L'exécution de l'étape a été effectuée. Regardez à nouveau la liste.

5        static int global = 95;
6    
7        static void debug(){
8            System.out.println();
9 =>         System.out.println("Exécution du débogage");
10        }
11    
12        void print(){
13            System.out.println("print()");
14        }

Avant l'exécution de l'étape, il s'est arrêté à la 8ème ligne, mais maintenant c'est la 9ème ligne. Cela signifie que vous procédez ligne par ligne. Allons plus loin et affichons la liste

step
>Exécution du débogage

En progressant, le traitement de sortie fonctionne.

Vérifiez la liste après avoir exécuté l'étape.

list
6    
7        static void debug(){
8            System.out.println();
9            System.out.println("Exécution du débogage");
10 =>     }
11    
12        void print(){
13            System.out.println("print()");
14        }
15    

De plus, je pense qu'il est facile de comprendre que vous lisez le code sur une ligne.

Jusqu'à présent, nous avons présenté les commandes et les opérations d'exécution des étapes, mais à partir de là, nous expliquerons l'utilité de l'exécution des étapes.

Tout d'abord, parcourons la liste jusqu'à ce que la liste d'attente soit la suivante.

20            int x = 50;
21    
22            String str = "Type de caractère";
23    
24 =>         Main m = new Main();
25    
26            x = 100;
27    
28            str = "Conversion de type de caractère";
29    

Au moment où le traitement jusqu'à ce point est en cours, les valeurs sont entrées respectivement dans les variables x et str. J'attribue une autre valeur après ce code, mais au cours de cette étape, vous pouvez voir la valeur de la variable à ce stade.

Utilisez la commande locals pour afficher les valeurs des variables locales.

main[1] locals 
Variables locales:
x = 50
str = "Type de caractère"

Comme vous pouvez le voir, la valeur actuelle de la variable locale est affichée.

Au fur et à mesure que vous avancez avec ce code, la valeur sera réécrite, alors passons d'abord à la fin de l'affectation.

26            x = 100;
27    
28            str = "Conversion de type de caractère";
29    
30 =>         m.print();
31    
32            System.out.println("main end");
33        }
34    }

À ce stade, nous avons remplacé les valeurs de x et str, respectivement. Vérifions à nouveau avec la commande locale.

main[1] locals
Variables locales:
x = 100
str = "Conversion de type de caractère"
m = instance of Main(id=422)

Les valeurs ont été réécrites car les modifications des valeurs x et str fonctionnent à l'étape actuelle d'exécution de l'étape. De plus, puisque la variable m est déclarée et que l'instance est affectée, la variable m est également nouvellement affichée.

De cette façon, vous pouvez voir l'état de la valeur au moment où le programme est en cours d'exécution et le regarder, donc lorsque vous vérifiez l'opération, vous pouvez vérifier si la valeur que vous vouliez est incluse à tout moment.

À propos, lorsque vous souhaitez vérifier une variable locale, vous pouvez également vérifier le contenu des variables d'instance et des variables statiques à l'aide de la commande d'impression.

Variables locales

main[1] print str
str = "Conversion de type de caractère"

Variable d'instance

main[1] print m.instans
m.instans = 60

variable statique

main[1] print Main.global
Main.global = 95

À la fin

Dans cet article, j'ai essayé pas à pas lors de la compilation, de l'exécution et du débogage de Java à l'invite de commande (terminal). Une fois que vous aurez installé Java, vous pourrez le faire, alors pourquoi ne pas l'essayer?

Cependant, je pense que les outils installés dans l'environnement de développement, etc. sont plus faciles à utiliser que l'exécution du débogage à partir de la ligne de commande. Veuillez également vous référer à l'article suivant pour exécuter le débogage avec eclipse.

Exécution du débogage dans l'IDE

Recommended Posts

Compilez et exécutez Java sur la ligne de commande
Compilez Java sur l'invite de commande
Procédure d'installation et d'utilisation de la ligne de commande AWS (awscli) sur CentOS
Exécutez PostgreSQL sur Java
Exécutez Maven sur Java 8 lors de la compilation sur Java 6 et des tests sur Java 11
Désassemblage de la commande d'exécution Docker. .. ..
Exécutez l'applet java sur ubuntu
Comment exécuter React et Rails sur le même serveur
Je souhaite utiliser l'applet Java facilement sur la ligne de commande sans utiliser l'IDE
Exécutez l'application Java EE sur CICS
Aide sur les commandes OpenJDK 8 java et javac
Exécutez l'AWS CLI sur Docker
Considération sur le framework de persistance Java 2017 (1)
Exécutez le script shell de tomcat sur java8
Activer les SDK Java 8 et Java 11 sur Ubuntu
Remarques sur le chemin et le package Java
Installez Java 9 sur Windows 10 et CentOS 7
Installez le plugin memcached sur MySQL et accédez à partir de Java
Comment exécuter l'exemple Kotlin Coroutine à partir de la ligne de commande
Comparaison du temps de traitement basé sur awk, la commande shell et Java
Installez Ubuntu20.04 sur RaspberryPi 4 et compilez Kubernetes pour exécuter le conteneur
Mes réflexions sur la méthode d'égalité (Java)
Une note sur les différences entre les interfaces et les classes abstraites en Java
Comment exécuter un fichier GIF à partir de la ligne de commande Linux (Ubuntu)
Kick ShellScript sur le serveur depuis Java
Installez OpenJDK (Java) sur le dernier Ubuntu
[Java] Créez un fichier jar compressé et non compressé avec la commande jar
Comment télécharger et exécuter le package Jar directement à partir du référentiel Maven avec juste la ligne de commande
Retour sur les bases de Java
Exécutez SystemSpec (RSpec) et Rubocop sur CircleCI
Exécutez le code Java stocké dans le presse-papiers.
[Java8] Recherchez le répertoire et récupérez le fichier
Créez un environnement ARM-cpu avec qemu sur mac et exécutez java [Résultat → Échec]
Exécutez l'environnement Docker Rails MySQL sur Heroku. concevoir et cacher l'API Twitter
[Java] Comprendre la différence entre List et Set
Installez java et android-sdk sur Mac en utilisant homebrew
Mettez Java 11 et Spring Tool Suite sur Mac
[Java débutant] Arguments de la ligne de commande ... Je ne sais pas ~
[Java] La partie déroutante de String et StringBuilder
J'ai comparé les caractéristiques de Java et .NET
Résumer les différences entre l'écriture C # et Java
Exécutez Mecab dans l'environnement Win10 + Eclipse + Java + cmecab-java (version janvier 2020)
[Java] Mémo sur la façon d'écrire la source
Télécharger et télécharger des notes en java sur S3
Exécutez Dataflow, Java, Streaming pour le moment
XXE et Java
Écrivez ABNF en Java et transmettez l'adresse e-mail
[Tutoriel] Télécharger Eclipse → Lancer l'application avec Java (Pléiades)
Veuillez noter la division (division) de java kotlin Int et Int
[Java] Trier la liste à l'aide de flux et d'expressions lambda
Importez une instance et utilisez-la sur un autre écran
Exécutez Rubocop et RSpec sur CircleCI et déployez-le sur ECS
Déployer des applications Java sur le service IBM Cloud Kubernetes
Organiser l'état actuel de Java et envisager l'avenir
Langage Java du point de vue de Kotlin et C #
[Android] Afficher les images et les caractères dans l'onglet ViewPager
Installez java et maven sur un nouveau mac en utilisant brew
[JAVA] Quelle est la différence entre interface et abstract? ?? ??
Je n'ai pas pu l'exécuter après la mise à niveau de la version Java