A maioria dos sites na internet diz:
"use o
javac
comando para compilar um.java
arquivo. Em seguida, execute-o usando ojava
comando"
Mas hoje eu tentei executar um programa java sem javac
e obtive um resultado estranho.
Aqui está o conteúdo de um arquivo chamado hello.java
:
public class Myclass {
public static void main(String[] args){
System.out.println("hello world");
}
}
Então eu corri:
$ javac hello.java
O que me dá esse erro:
hello.java:1: error: class Myclass is public, should be declared in a file named Myclass.java
public class Myclass {
^
1 error
Mas quando eu o executo sem o javac
comando, ele é executado sem erros.
$ java hello.java
hello world
O java
comando também compila o programa? Se sim, por que precisamos do javac
comando?
A versão do meu java é:
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.java
e, em seguida, na linha de comando, compile-o assim javac Myclass.java
e execute-o assim java Myclass
.
javac
ainda usado para compilar se você não deseja implantar o código-fonte ou se possui mais de um único arquivo ( documentação da java
opção para arquivo de origem: usada apenas para iniciar um único programa de arquivo-fonte.)
javac
compila a fonte Java no bytecode interpretado específico da JVM e o java
comando a carrega dentro do ClassLoader da JVM.