La plupart des sites Web sur Internet disent:
"utilisez la
javaccommande pour compiler un.javafichier. Puis exécutez-le en utilisant lajavacommande"
Mais aujourd'hui, j'ai essayé d'exécuter un programme java sans javacet j'ai obtenu un résultat étrange.
Voici le contenu d'un fichier appelé hello.java:
public class Myclass {
public static void main(String[] args){
System.out.println("hello world");
}
}
Puis j'ai couru:
$ javac hello.java
Ce qui me donne cette erreur:
hello.java:1: error: class Myclass is public, should be declared in a file named Myclass.java
public class Myclass {
^
1 error
Mais quand je l'exécute sans la javaccommande, il s'exécute sans aucune erreur.
$ java hello.java
hello world
La javacommande compile- t-elle également le programme? Si oui, pourquoi avons-nous besoin de la javaccommande?
La version de mon java est:
openjdk version "12.0.2" 2019-07-16
OpenJDK Runtime Environment (build 12.0.2+10)
OpenJDK 64-Bit Server VM (build 12.0.2+10, mixed mode)
Myclass.javapuis à partir de la ligne de commande, compilez-le comme ceci javac Myclass.java, puis exécutez-le comme ceci java Myclass.
javactoujours utilisé pour compiler si vous ne voulez pas déployer le code source, ou si vous avez plus d'un seul fichier ( documentation de l' javaoption for source-file: Uniquement utilisé pour lancer un seul programme de fichier source.)
javaccompile la source Java dans le bytecode interprété spécifique à la JVM et la javacommande le charge dans le ClassLoader de la JVM.