Java Language La commande 'javac' - démarrer


Exemple

Exemple simple

En supposant que "HelloWorld.java" contient la source Java suivante:

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

(Pour une explication du code ci-dessus, reportez-vous à la section Démarrer avec le langage Java .)

Nous pouvons compiler le fichier ci-dessus en utilisant cette commande:

$ javac HelloWorld.java 

Cela produit un fichier appelé "HelloWorld.class", que nous pouvons alors exécuter comme suit:

$ java HelloWorld
Hello world!

Les points clés à noter dans cet exemple sont les suivants:

  1. Le nom de fichier source "HelloWorld.java" doit correspondre au nom de la classe dans le fichier source ... qui est HelloWorld . S'ils ne correspondent pas, vous obtiendrez une erreur de compilation.
  2. Le nom de fichier du bytecode "HelloWorld.class" correspond au nom de la classe. Si vous deviez renommer "HelloWorld.class", vous obtiendriez une erreur lorsque vous avez essayé de l'exécuter.
  3. Lorsque vous exécutez une application Java utilisant java , vous indiquez le nom de classe NOT le nom de fichier du bytecode.

Exemple avec des packages

Le code Java le plus pratique utilise des packages pour organiser l'espace de noms des classes et réduire le risque de collision de noms de classe accidentels.

Si nous voulions déclarer la classe HelloWorld dans un paquet appelé com.example , le fichier "HelloWorld.java" contiendrait la source Java suivante:

package com.example;

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

Ce fichier de code source doit être stocké dans une arborescence de répertoires dont la structure correspond au nom du package.

.    # the current directory (for this example)
|
 ----com
     |
      ----example
          |
           ----HelloWorld.java

Nous pouvons compiler le fichier ci-dessus en utilisant cette commande:

$ javac com/example/HelloWorld.java 

Cela produit un fichier appelé "com / example / HelloWorld.class"; c'est-à-dire qu'après la compilation, la structure du fichier devrait ressembler à ceci:

.    # the current directory (for this example)
|
 ----com
     |
      ----example
          |
           ----HelloWorld.java
           ----HelloWorld.class

Nous pouvons alors exécuter l'application comme suit:

$ java com.example.HelloWorld
Hello world!

Les points supplémentaires à noter de cet exemple sont les suivants:

  1. La structure de répertoire doit correspondre à la structure du nom du package.
  2. Lorsque vous exécutez la classe, le nom complet de la classe doit être fourni. c'est-à-dire "com.example.HelloWorld" pas "HelloWorld".
  3. Vous n'avez pas besoin de compiler et d'exécuter du code Java à partir du répertoire en cours. Nous le faisons juste ici pour l'illustrer.

Compiler plusieurs fichiers à la fois avec 'javac'.

Si votre application se compose de plusieurs fichiers de code source (et la plupart le font!), Vous pouvez les compiler un par un. Alternativement, vous pouvez compiler plusieurs fichiers en même temps en listant les noms de chemins:

$ javac Foo.java Bar.java

ou en utilisant la fonctionnalité générique de nom de fichier de votre shell de commande ....

$ javac *.java
$ javac com/example/*.java
$ javac */**/*.java #Only works on Zsh or with globstar enabled on your shell

Cela compilera tous les fichiers source Java dans le répertoire courant, dans le répertoire "com / example" et récursivement dans les répertoires enfants respectivement. Une troisième alternative consiste à fournir une liste des noms de fichiers source (et des options du compilateur) en tant que fichier. Par exemple:

$ javac @sourcefiles

où le fichier sourcefiles contient:

Foo.java
Bar.java
com/example/HelloWorld.java

Note: compiler du code comme celui-ci est approprié pour les petits projets d'une personne et pour les programmes ponctuels. Au-delà, il est conseillé de sélectionner et d'utiliser un outil de compilation Java. Alternativement, la plupart des programmeurs utilisent un IDE Java (par exemple NetBeans , eclipse , IntelliJ IDEA ) qui offre un compilateur intégré et la création incrémentale de "projets".

Options «javac» couramment utilisées

Voici quelques options pour la commande javac susceptibles de vous être utiles

  • L'option -d définit un répertoire de destination pour l'écriture des fichiers ".class".
  • L'option -sourcepath définit un chemin de recherche de code source.
  • Le -cp ou -classpath option permet de définir le chemin de recherche pour trouver des classes externes et compilées précédemment. Pour plus d'informations sur le chemin de classe et sa spécification, reportez-vous à la rubrique The Classpath Topic.
  • L'option -version imprime les informations de version du compilateur.

Une liste plus complète des options du compilateur sera décrite dans un exemple distinct.

Les références

La référence définitive pour la commande javac est la page de manuel Oracle pour javac .