El error «java.lang.module.FindException: Module javafx.controls not found» generalmente ocurre cuando el sistema de módulos de Java no puede encontrar el módulo javafx.controls
que estás tratando de usar en tu aplicación JavaFX. Este problema es común en aplicaciones que usan JavaFX con JDK 11 o superior, ya que JavaFX no está incluido en el JDK a partir de Java 11. Aquí te explico cómo resolver este problema paso a paso.
Paso 1: Verificar Dependencias en pom.xml
Asegúrate de que tu archivo pom.xml
tiene las dependencias correctas para JavaFX. Debes incluir los módulos de JavaFX que estás utilizando en tu aplicación. Aquí tienes un ejemplo de cómo se deben configurar las dependencias para JavaFX usando Maven:
<dependencies>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>15</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId>
<version>15</version>
</dependency>
<!-- Añade más módulos de JavaFX según sea necesario -->
</dependencies>
Asegúrate de que la versión de JavaFX en las dependencias coincida con la versión del JDK que estás utilizando y sea compatible.
Paso 2: Configurar el Path del Módulo en la VM
Necesitas especificar la ruta del módulo de JavaFX en los argumentos de la VM al ejecutar tu aplicación. Esto le indica a la JVM dónde buscar los módulos necesarios.
- Configurar Argumentos de la VM:
- Si estás ejecutando tu aplicación desde una IDE como Eclipse, ve a la configuración de la ejecución de tu aplicación.
- Abre las configuraciones de ejecución (Run Configurations).
- Busca la sección de argumentos VM (VM Arguments) y añade lo siguiente:
--module-path /path/to/javafx-sdk/lib --add-modules javafx.controls,javafx.fxml
Aquí, debes reemplazar/path/to/javafx-sdk/lib
con la ruta real donde están ubicadas las librerías de JavaFX. Si estás usando Maven, esta ruta podría ser el directorio en tu repositorio local donde Maven ha descargado las librerías de JavaFX, como~/.m2/repository/org/openjfx/javafx-controls/15/javafx-controls-15.jar
.
- Configurar Ruta en MAVEN_OPTS:
- Otra opción es configurar los argumentos del módulo globalmente en las variables de entorno de tu sistema. Puedes añadir lo siguiente a la variable
MAVEN_OPTS
:-Djdk.module.path=/path/to/javafx-sdk/lib
Paso 3: Asegurarte de Usar JDK Adecuado
JavaFX requiere JDK 11 o superior desde que fue separado del JDK estándar. Asegúrate de que estás utilizando una versión adecuada del JDK para la versión de JavaFX que has especificado.
Paso 4: Limpieza y Reconstrucción
Después de hacer estos cambios, es una buena práctica limpiar y reconstruir tu proyecto:
- En Eclipse, puedes hacerlo desde
Project
->Clean...
y luego seleccionaClean all projects
.
Paso 5: Verifica y Ejecuta
Finalmente, verifica todos los cambios y ejecuta tu aplicación. Si todos los pasos anteriores están correctos, tu aplicación debería ejecutarse sin mostrar el error de módulo no encontrado.
Si continúas teniendo problemas, verifica que los pasos anteriores se hayan realizado correctamente, y que no haya errores de ruta o configuración en los argumentos de la VM o en el pom.xml
.
Gracias por visitar mi blog de informática, mi nombre es Tomás y soy formador y desarrollador web. Si quiere usted dejarme alguna sugerencia, ayuda o quiere un servicio de formación estoy escuchando ofertas en tomas.gonzalez@infogonzalez.com, en Facebook a https://www.facebook.com/Infogonzalez estoy deseando escucharle. Su duda o sugerencia NO molesta.