O comando 'java' compilar programas Java?

milad:

A maioria dos sites na internet digamos:

"usar o javaccomando para compilar um .javaarquivo. Em seguida, executá-lo usando o javacomando"

Mas hoje eu tentei executar um programa java sem javace eu tenho um resultado estranho.

Eis 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 executá-lo sem o javaccomando, ele executou sem erros.

$ java hello.java
hello world

O javacomando também compilar 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)
kaan:

Antes de Java 11, para executar seu código você tem que primeiro compilá-lo, então você pode executá-lo. Aqui está um exemplo:

javac test.java
java test

Desde Java 11, você ainda pode fazer javac+ java, ou você pode executar javapor si só para compilar e auto-executar o seu código. Note que nenhum .classarquivo será gerado. Aqui está um exemplo:

java test.java

Se você executar java -help, você verá os vários usos permitidos. Aqui está o que parece que na minha máquina. O último é o que você correu para dentro: java [options] <sourcefile> [args]o que irá "executar um único programa de arquivo de origem".

$ java -help
Usage: java [options] <mainclass> [args...]
           (to execute a class)
   or  java [options] -jar <jarfile> [args...]
           (to execute a jar file)
   or  java [options] -m <module>[/<mainclass>] [args...]
       java [options] --module <module>[/<mainclass>] [args...]
           (to execute the main class in a module)
   or  java [options] <sourcefile> [args]
           (to execute a single source-file program)

ATUALIZAR:

Como apontado por @BillK, OP também perguntou:

por que precisamos o comando javac?

A razão que precisamos javacé criar .classarquivos para que o código pode ser criado, testado, distribuído, executado, partilhado, etc. como é hoje. A motivação para a PEC 330 foi para torná-lo mais fácil para os "estágios iniciais de aprender Java, e ao escrever pequenos programas utilitários" sem alterar quaisquer outros usos existentes.

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=304514&siteId=1
Recomendado
Clasificación