Los archivos YML no se detectan al ejecutar el jar ejecutable

Resuelto Nec - divinos asked hace 7 meses • 0 respuestas

Proyecto: Error de arranque de Javafx + Spring al ejecutar el archivo jar moudlar

Problema: los archivos YML (actualmente en uso) o los archivos de propiedades no se detectan, funcionó bien cuando se ejecuta en el IDE de la comunidad Intellij

Los archivos YML están en el archivo jar, después de extraer el archivo jar pero aún no se detectan.

(Usando Module-info.java en el proyecto)

Java 21: corrección de Amazon JDK

Javafx: 21

Bota de primavera: 3


Error de consola:

Descubrimiento de Standard Commons Logging en acción con spring-jcl: elimine commons-logging.jar de classpath para evitar posibles conflictos

:: Arranque de primavera :: (v3.2.0)

14:00:32.070 [JavaFX-Launcher] INFORMACIÓN org.springframework.boot.SpringApplication - Iniciando aplicación usando Java 21.0.2 con PID 10608 (iniciado por una persona en alguna carpeta/) 14:00:32.076 [JavaFX-Launcher] INFORMACIÓN org.springframework.boot.SpringApplication: no hay ningún perfil activo establecido, recurriendo a 1 perfil predeterminado: "predeterminado"


Solución que funcionó: funcionó cuando el jar se creó con artifcat "Copiar al directorio de salida y vincular a través del manifiesto"

No funciona cuando se extrae al frasco de destino.

La solución funcionó pero extrajo todas las dependencias en la carpeta y su tamaño es enorme.

Necesario: Cómo hacer que funcione cuando el archivo jar ejecutable se ejecuta sin ningún yml que no detecte problemas.

Nec - divinos avatar Feb 16 '24 16:02 Nec - divinos
Aceptado

SpringBoot tiene muchas formas de encontrar propiedades . Compruebe cómo encuentra propiedades e intente utilizarlas para ayudar a depurar su problema.

Por lo general, los recursos de aplicaciones configurables estarán en un sistema de archivos y no en un archivo jar (conocido por el término Spring "Configuración externa") a menos que sean recursos predeterminados. Consulte la sección 23.3 Archivos de propiedades de la aplicación sobre dónde busca Spring los archivos de propiedades. Probablemente desee que la instalación de su aplicación tenga un archivo de configuración editable en uno de esos lugares para que el usuario pueda configurar su aplicación.

Recursos adicionales

  • Baeldung proporciona una guía para las propiedades de SpringBoot , que incluye información sobre los archivos de propiedades de configuración predeterminados y externalizados, incluido cómo especificarlos y ubicarlos.

Consejos: Modularidad, aplicaciones SpringBoot JavaFX, herramientas de empaquetado y construcción

Este consejo no es una respuesta directa a su pregunta, pero algunos de los temas están relacionados indirectamente.

Spring a partir de la versión 6 (o SpringBoot 3) no está diseñado para funcionar bien con módulos Java (IMO). Se basa en el mecanismo del módulo automático que tiene numerosos inconvenientes. Por ejemplo, dichas aplicaciones no se pueden vincular mediante jlink.

Recomiendo utilizar una configuración no modular (por ejemplo, eliminar su archivo module-info.java). La información sobre el desarrollo de aplicaciones JavaFX no modulares se encuentra en openjfx.io Getting Started .

Para empaquetar una aplicación JavaFX para su implementación, necesita crear una imagen de tiempo de ejecución adecuada. Recomiendo empaquetar usando una herramienta de compilación (gradle o maven) posiblemente aumentada con complementos, scripts y herramientas de línea de comandos como jlinky jpackage.

Empaquetar una aplicación JavaFX como un único archivo jar que incluye módulos JavaFX no es una configuración compatible. Rompe la modularidad de Java que JavaFX o las aplicaciones modulares suponen que está presente. A pesar de esto, empaquetar una aplicación JavaFX como un único archivo jar puede funcionar en algunas circunstancias . Hacerlo para una aplicación multiplataforma que se puede ejecutar en múltiples plataformas puede generar un archivo jar muy grande, especialmente si se utiliza el componente javafx-web. Un jar ejecutable multiplataforma que incluya componentes JavaFX debe incluir todos los componentes de tiempo de ejecución de JavaFX (binarios de Java y código nativo) para todas las plataformas posibles.

Lamentablemente, empaquetar aplicaciones JavaFX es un tema complejo y, a veces, difícil. La información se encuentra en la sección Empaquetado de la etiqueta StackOverflow JavaFX y también en la sección Imágenes en tiempo de ejecución de la documentación de introducción de openjfx .

jewelsea avatar Feb 16 '2024 19:02 jewelsea