openxava / documentación / Carga de código en caliente con OpenXava Studio / Java 11

×Novedad: Ciudades inteligentes en Brasil  - 22 de junio · Leer más

Tabla de contenidos

Carga de código en caliente con OpenXava Studio / Java 11
Java incluido en OpenXava Studio 7 R4
IntelliJ
Visual Studio Code

Este documento cubre la recarga de código en caliente para el ahora descatalogado OpenXava Studio y para Java 11. Si usas IntelliJ o una versión moderna de Java (17, 21 o 25), consulta la documentación actualizada: Carga de código en caliente.

Java incluido en OpenXava Studio 7 R4

Para que la recarga de código funcione es necesario ejecutar la aplicación con el Java incluido en OpenXava Studio 7 R4. Este Java es un JDK 11 basado en DCEVM y que integra HotswapAgent, además de estar afinado especialmente para funcionar bien con la recarga en caliente de OpenXava.
Este JDK se encuentra en la distribución de OpenXava Studio 7 R4, en openxava-studio-7-r4/studio/jre.
Si ejecutas el OpenXava Studio en una máquina limpia, sin Java, y en un workspace nuevo, lo normal es que se use este Java por defecto. Ahora bien, si ya tienes otros JDK en tu ordenador o tienes un workspace donde hayas dado de alta otros JDK, puede que tu aplicación no esté usando el JDK con HotswapAgent y por tanto no funcione la recarga de clases.
Sabrás si estás ejecutando el JDK correcto si ves estas líneas en el log al arrancar tu aplicación:
HOTSWAP AGENT: 13:40:23.126 INFO (org.hotswap.agent.HotswapAgent) - Loading Hotswap agent {1.4.1} - unlimited runtime class redefinition.
Starting HotswapAgent '/home/theuser/openxava-studio-7-r4/studio/jre/lib/hotswap/hotswap-agent.jar'
Si no es así, en OpenXava Studio, ve a Window > Preferences > Java > Installed JREs y verifica que tienes un JRE que apunta openxava-studio-7-r4/studio/jre, como ves aquí:
openxava-studio-7r4-jre.png
Si no lo hubiese, añádelo tú mismo. Además, elimina todos los demás Java 11 que tengas registrados. Prueba de nuevo ejecutar tu aplicación.
Si todavía no ejecuta el Java con HotswapAgent puede que tengas un Java 1.8 reconocido por OpenXava Studio y tu proyecto esté configurado para trabajar con Java 1.8, y por eso escoge el Java 1.8 en lugar del Java 11 (el de OpenXava Studio). Para arreglar esto ve al pom.xml de tu proyecto y cambia:
<properties>
    ...  
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>
Por:
<properties>
    ...  
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
</properties>
Después con el botón derecho encima de tu proyecto escoge Maven > Update Project... Con esto ya debería funcionar.
Si quieres seguir compilando con Java 1.8 y por eso no quieres cambiar el pom.xml, no hay problema. Ve a Run Configurations:
eclipse-run-configurations.png
Busca tu aplicación y en la carpeta JRE, asegúrate de que tu aplicación se ejecuta con el JDK del OpenXava Studio:
run-configuration-jre.png
Si no es así cámbialo, quizás tengas que usar la opción Alternate JRE.

IntelliJ

También puedes disfrutar de la recarga de código en caliente usando IntelliJ. El truco es ejecutar la aplicación con el JDK incluido en OpenXava Studio 7 R4. Tendrás que descargar OpenXava Studio, aunque solo sea para usar su JDK.

Da de alta el JDK incluido en OpenXava Studio 7 R4 en tu IntelliJ. Ve a File > Project Structure. Allí en la sección SDKs añade el JDK que se encuentra en openxava-studio-7-r4/studio/jre:

intellij-openxava-studio-jdk-definition.png

Después en la sección Project, escoge este JDK como SDK para el proyecto:

intellij-openxava-studio-jdk-for-project.png

Ten en cuenta que IntelliJ no compila el código automáticamente si la aplicación se está ejecutando, por eso después de cambiar el código has de pulsar el botón de Build, el que tiene un martillito, para que compile y poder ver los cambios actualizados.

Visual Studio Code

Para usar la recarga de código en caliente con Visual Studio Code has de ejecutar la aplicación con el JDK incluido en OpenXava Studio 7 R4, por eso tendrás que descargar OpenXava Studio, aunque solo sea para usar su JDK.
Para que Visual Studio Code reconozca tu JDK en el settings.json para tu usuario añade:

"java.configuration.runtimes": [
    {
        "name": "JavaSE-11",
        "path": "/home/youruser/openxava-studio-7-r4/studio/jre",
        "default": true
    }
]

Visual Studio Code compila el código automáticamente a medida que lo editas, igual que OpenXava Studio, así que solo tienes que tocar el código e ir al navegador para ver la aplicación cambiada de forma inmediata.