¿Tiene el comando 'java' compilar programas Java?

Milad:

La mayoría de los sitios web en Internet por ejemplo:

"utilizar el javaccomando para compilar un .javaarchivo. A continuación, ejecute utilizando el javacomando"

Pero hoy he tratado de ejecutar un programa Java sin javacy me dieron un resultado extraño.

Estos son los contenidos de un archivo llamado hello.java:

public class Myclass {
 public static void main(String[] args){
    System.out.println("hello world");
  }
}

Entonces me encontré:

$ javac hello.java

Lo que me da este error:

hello.java:1: error: class Myclass is public, should be declared in a file named Myclass.java
public class Myclass {
       ^
1 error

Pero cuando lo ejecuto sin el javaccomando, se ejecuta sin errores.

$ java hello.java
hello world

¿El javacomando también compila el programa? Si es así, ¿por qué necesitamos el javaccomando?

La versión de mi java es:

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 ejecutar el código debe compilar por primera vez, a continuación, se puede ejecutar. He aquí un ejemplo:

javac test.java
java test

Desde Java 11, todavía se puede hacer javac+ java, o puede ejecutar javapor sí mismo para compilar y ejecutar automáticamente el código. Tenga en cuenta que ningún .classarchivo se generará. He aquí un ejemplo:

java test.java

Si se ejecuta java -help, podrá ver los distintos usos permitidos. Esto es lo que parece que en mi máquina. El último es lo que se ejecutó en: java [options] <sourcefile> [args]que "ejecutar un programa único archivo de origen".

$ 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)

ACTUALIZAR:

Como ha señalado @BillK, OP también preguntó:

¿por qué necesitamos el comando javac?

La razón por la que necesitamos javaces crear .classarchivos de modo que se puede crear código, prueba, distribuir, ejecutar, compartir, etc., como lo es hoy. La motivación para la PEC 330 fue para que sea más fácil para "primeras etapas de aprendizaje de Java, y al escribir programas utilitarios pequeños" sin cambiar otros usos existentes.

Supongo que te gusta

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