====== Compilar y Ejecutar desde un Terminal ======
===== Configurar =====
Para poder compilar desde el terminal lo primero que debo comprobar es que tengo acceso desde el terminal **cmd** de Windows al compilador de java (**javac**), y también a la máquina virtual (**java**).
* Abriendo un terminal cmd: Botón de Inicio -> Ejecutar -> ''cmd.exe''
* Ejecuto el comando ''javac''
* Ejecuto el comando ''java''
Si al ejecutar ambas instrucciones me aparecen las distintas opciones de uso de cada comando, es que el terminal reconoce los comandos.
Si me indica que **"no se reconoce el comando..."** en alguno de los 2 casos, entonces debo añadirlo.
Para añadirlo tan solo debo configurar la variable PATH del sistema con la ruta del directorio del jdk de java. [[bloque1:javaeclipse#actualizar_variable_de_entornopath|Se explica aquí]].
===== Compilar =====
Para compilar hago uso del programa **javac** seguido del nombre del fichero ''.java'' que quiero compilar.
javac ficheroFuente [opciones]
#Ejemplo
javac HolaMundo.java
Si existen errores de compilación nos lo mostrará e indicará la linea. Si todo está correcto, no mostrará nada pero generará un fichero ''.class'' en el mismo directorio que el ''.java''
=== Compilar con Package ===
Para compilar un fichero fuente que contiene la definición **package** (1ª linea del fichero fuente) debo compilarlo desde el directorio en el que se encuentra el package:
javac package/subpackage/HolaMundo.java
==== Compilar varios ficheros ====
Para compilar varios ficheros tengo varias opciones:
* Indicar todos los ficheros al comando //javac// separados por un espacio:
javac HolaMundo.java Principal.java
javac paquete1/HolaMundo.java paquete1/Principal.java
* Utilizar el caracter comodín (*):
javac *.java
javac paquete1/*.java paquete2/*.java
* Si en el código de un fichero fuente se hace referencia a otro fichero fuente que se encuentra en el mismo directorio, se compilará también automáticamente.
===== Ejecutar con java =====
==== Ejecutar ficheros .class ====
Para ejecutar haremos uso del comando **java** seguido del nombre del fichero ''.class'', **pero sin incluir la extensión ''.class''**:
java HolaMundo
En el caso de que la clase ''.java'' tuviera la definición de //package//:
package com.fvaldeon.paquete1;
public class HolaMundo{
}
java com/fvaldeon/paquete1/HolaMundo
Observar que a la hora de ejecutar un fichero compilado, **no se indica su extensión al final (.class)**.
==== Ejecutar un fichero .jar ====
Para compilar un programa empaquetado en un fichero ''.jar'':
java -jar HolaMundo.jar
==== Ejecutar directamente ficheros .java====
Desde Java 11 se permite ejecutar programas de un solo fichero fuente, sin necesidad de compilación previa.
java HolaMundo.java
La finalidad de esta nueva opción es permitir probar programas sencillos de forma sencilla y rápida, cuando estamos aprendiendo el lenguaje.
[[https://www.baeldung.com/java-single-file-source-code#launching-single]]
----
{{ vimeo>905547705? }}
----
(c) {{date> %Y}} Fernando Valdeón