À propos des commandes Javac

À propos de la commande javac, qui est une commande de compilateur Java

Cette commande que j'utilise avec désinvolture. Parfois, il y a des moments où vous ne pouvez pas compiler simplement lors de la spécification du codage du fichier ou lors de la spécification d'un package, donc je vais le résumer comme un rappel.

À propos de l'environnement d'exécution

Le contenu décrit ci-dessous est exécuté dans l'environnement suivant. Système d'exploitation: macOS Mojave (version 10.14.4) commande javac: version 1.8.0_151

Comment utiliser l'exemple d'exécution de commande javac 1

Tout d'abord, à propos de l'utilisation simple, du cas de la compilation de l'exemple de source écrit en Java comme suit.

Sample.java


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

Spécifiez simplement le fichier ci-dessus dans l'argument de la commande javac et exécutez-le comme suit. S'il n'y a pas d'erreurs particulières et que la compilation est réussie, une invite s'affiche.

Exemple d'exécution 1


$ javac Sample.java

En passant, si la syntaxe Java est incorrecte, l'erreur suivante se produit (lorsque l'orthographe vide de la valeur de retour de la fonction principale est incorrecte). Le message est étonnamment gentil, et si vous le lisez correctement, vous pouvez généralement comprendre pourquoi l'erreur s'est produite.

Exemple d'exécution 1(Erreur de compilation)


$ javac Sample.java
Sample.java:2:Erreur:Impossible de trouver le symbole
    public static viod main(String[] args) {
                  ^
symbole:Classe nulle
endroit:Échantillon de classe
1 erreur

Comment utiliser l'exemple d'exécution de commande javac 2

Vient ensuite le cas où le codage de caractères du fichier source dans lequel le code Java est écrit est différent du codage de caractères du système de l'environnement client. Par exemple, si c'est «Windows», cela devient une erreur, donc fondamentalement «SJIS», par exemple, enregistrez le fichier qui décrit ou «Hello» dans la source en japonais «en UTF-8» pour compiler.

Vérifiez préalablement pour donner un exemple de l'erreur. Tout d'abord, l'environnement par défaut? Obtenez le codage du fichier. Créez la source suivante et exécutez-la après la compilation. Lorsqu'il est exécuté, le codage du fichier est émis vers la sortie standard. Cette fois, il est sorti sous le nom ʻUTF-8`.

EncodingCheck.java


public class EncodingCheck {
    public static void main(String[] args) {
        System.out.println(System.getProperty("file.encoding"));
    }
}

Ensuite, enregistrez le fichier source avec le contenu suivant dans le codage de caractères SJIS et compilez-le. Ceci est réglé sur SJIS pour le rendre différent du codage de fichier examiné à l'avance ci-dessus.

Sample2.java


public class Sample2 {
    public static void main(String[] args) {
        System.out.println("Bonjour");
    }
}

Le résultat de l'exécution est le suivant. Une erreur de compilation s'est produite. En regardant le contenu de l'erreur, c'était une erreur car un code de caractère qui ne pouvait pas être affiché normalement en UTF8 a été utilisé. Dans ce cas, vous pouvez spécifier le codage des caractères avec l'option de la commande javac (dans ce cas, bien sûr, vous pouvez compiler normalement même si vous enregistrez à nouveau le fichier en UTF8). (Je ne sais pas pourquoi 7 erreurs sont affichées. Je veux le vérifier même quand j'en ai envie)

Exemple d'exécution 2 (erreur de compilation)


$ javac Sample2.java
Sample2.java:3:Erreur:Ce caractère ne peut pas être mappé au codage UTF8
        System.out.println("����ɂ���");
                            ^
Sample2.java:3:Erreur:Ce caractère ne peut pas être mappé au codage UTF8
        System.out.println("����ɂ���");
                             ^
Sample2.java:3:Erreur:Ce caractère ne peut pas être mappé au codage UTF8
        System.out.println("����ɂ���");
                              ^
Sample2.java:3:Erreur:Ce caractère ne peut pas être mappé au codage UTF8
        System.out.println("����ɂ���");
                               ^
Sample2.java:3:Erreur:Ce caractère ne peut pas être mappé au codage UTF8
        System.out.println("����ɂ���");
                                 ^
Sample2.java:3:Erreur:Ce caractère ne peut pas être mappé au codage UTF8
        System.out.println("����ɂ���");
                                  ^
Sample2.java:3:Erreur:Ce caractère ne peut pas être mappé au codage UTF8
        System.out.println("����ɂ���");
                                   ^
7 erreurs

Comme indiqué ci-dessous, si vous spécifiez le codage de caractères du fichier SJIS dans l'argument de l'option ʻencoding et que vous l'exécutez, aucune erreur de compilation ne se produira (D'ailleurs, l'option ʻencoding est décrite après le nom du fichier. Aucun problème).

Exemple d'exécution 2


$ javac -encoding sjis Sample2.java

Épilogue

Il y a encore d'autres choses que j'aimerais confirmer, mais même si j'écris plus, ce sera trop, donc c'est fini. Plus tard, j'aimerais vérifier le chemin de classe et le chemin source.

Recommended Posts

À propos des commandes Javac
À propos des commandes qiita_org
À propos des commandes Java
À propos de method.invoke
À propos de Kotlin
À propos de attr_accessor
À propos de Hinemos
À propos de l'héritage
À propos de Docker
À propos du printemps ③
À propos du polymorphisme
À propos facultatif
À propos du hachage
À propos de JitPack
À propos de ça ()
À propos de l'encapsulation
À propos de JAVA_HOME
À propos de statique
À propos des exceptions
À propos de la portée
[Maven] À propos de Maven