A maioria dos sites na internet diz:
"use o
javaccomando para compilar um.javaarquivo. Em seguida, execute-o usando ojavacomando"
Mas hoje eu tentei executar um programa java sem javace 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 javaccomando, ele é executado sem erros.
$ java hello.java
hello world
O javacomando também compila o programa? Se sim, por que precisamos do javaccomando?
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.javae, em seguida, na linha de comando, compile-o assim javac Myclass.javae execute-o assim java Myclass.
javacainda usado para compilar se você não deseja implantar o código-fonte ou se possui mais de um único arquivo ( documentação da javaopção para arquivo de origem: usada apenas para iniciar um único programa de arquivo-fonte.)
javaccompila a fonte Java no bytecode interpretado específico da JVM e o javacomando a carrega dentro do ClassLoader da JVM.