es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Docker: la imagen no se ejecutará: No se encontraron clases de configuración automática en META-INF/spring.factories

Estoy trabajando en mi primera imagen Docker muy básica con Spring Boot y Gradle. Cuando la ejecuto, obtengo el siguiente error:
No se encontraron clases de configuración automática en META-INF/spring.factories. Si está utilizando un paquete personalizado, asegúrese de que el archivo sea correcto.

02:33:59.843 [main] ERROR org.springframework.boot.SpringApplication - Application run failed
java.lang.IllegalArgumentException: No se encontraron clases de configuración automática en META-INF/spring.factories. Si está utilizando un paquete personalizado, asegúrese de que el archivo sea correcto.
        en org.springframework.util.Assert.notEmpty (Assert.java:470)
        en org.springframework.boot.autoconfigure.AutoConfigurationImportSelector.getCandidateConfigurations (AutoConfigurationImportSelector.java: 180)
        en org.springframework.boot.autoconfigure.AutoConfigurationImportSelector.getAutoConfigurationEntry (AutoConfigurationImportSelector.java:123)
        en org.springframework.boot.autoconfigure.AutoConfigurationImportSelector$AutoConfigurationGroup.process (AutoConfigurationImportSelector.java:434)
        en org.springframework.context.annotation.ConfigurationClassParser$DeferredImportSelectorGrouping.getImports (ConfigurationClassParser.java: 879)
        en org.springframework.context.annotation.ConfigurationClassParser$DeferredImportSelectorGroupingHandler.processGroupImports (ConfigurationClassParser.java:809)
        en org.springframework.context.annotation.ConfigurationClassParser$DeferredImportSelectorHandler.process (ConfigurationClassParser.java:780)
        en org.springframework.context.annotation.ConfigurationClassParser.parse (ConfigurationClassParser.java:193)
        en org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions (ConfigurationClassPostProcessor.java:331)
        en org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry (ConfigurationClassPostProcessor.java:247)
        en org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors (PostProcessorRegistrationDelegate.java:311)
        en org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors (PostProcessorRegistrationDelegate.java:112)
        en org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:746)
        en org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:564)
        en org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:145)
        en org.springframework.boot.SpringApplication.refresh(SpringApplication.java:730)
        en org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:412)
        en org.springframework.boot.SpringApplication.run(SpringApplication.java:302)
        en org.springframework.boot.SpringApplication.run(SpringApplication.java:1301)
        en org.springframework.boot.SpringApplication.run(SpringApplication.java:1290)
        en be.dennisvn.demo.MoesCrudApplication.main(MoesCrudApplication.java:13)
02:33:59.875 [main] DEBUG org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext - Cerrando org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@d6da883, iniciado el Thu Dec 02 02:33:59 UTC 2021

Este es mi clase principal:

package be.dennisvn.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MoesCrudApplication {
    public static void main(String[] args) {
        SpringApplication.run(MoesCrudApplication.class, args);
    }
}

Este es mi archivo «build.gradle»:
plugins {
id ‘org.springframework.boot’ version ‘2.6.0’
id ‘io.spring.dependency-management’ version ‘1.0.11.RELEASE’
id ‘java’
id ‘com.palantir.docker’ version ‘0.22.1’
}
group = ‘be.dennisvn’
version = ‘0.0.1-SNAPSHOT’
sourceCompatibility = ’11’

configurations {
compileOnly {
extendsFrom annotationProcessor
}
}

repositories {
mavenCentral()
}

docker {
name “crudformoes”
dockerfile file(‘Dockerfile’)
copySpec.from(jar).rename(“.*”,”app.jar”)
buildArgs([‘JAR_FILE’: ‘app.jar’])
}

dependencies {
implementation ‘org.springframework.boot:spring-boot-starter-data-jpa’
implementation ‘org.springframework.boot:spring-boot-starter-web’
implementation ‘org.springframework.boot:spring-boot-starter-websocket’
compileOnly ‘org.projectlombok:lombok’
runtimeOnly ‘org.postgresql:postgresql’
annotationProcessor ‘org.projectlombok:lombok’
testImplementation ‘org.springframework.boot:spring-boot-starter-test’
}

test {
useJUnitPlatform()
}

Este es mi archivo «Dockerfile»:

FROM openjdk:17.0.1
ADD MoesCrud.jar MoesCrud.jar
EXPOSE 9090
ENTRYPOINT [“java”, “-jar”, “MoesCrud.jar”]
“`
Además de probar la mayoría de las sugerencias en otros hilos, también intenté quitar id &# 39; com.palantir.docker &# 39; versión &# 39; 0.22.1 &# 39; porque pensé que el plugin lo estaba causando. Pero tampoco resuelve el error. Sé que ver tutoriales de YouTube no siempre es la forma más inteligente, pero me resulta abrumador encontrar una explicación directa de cómo funciona todo junto. Revisé publicaciones similares, pero todas tienen compilaciones muy específicas, trabajan con archivos pom.xml o se publican hace años.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Este mensaje de error sugiere que no existen clases de autoconfiguración en el archivo META-INF/spring.factories. Las clases de autoconfiguración son utilizadas por Spring Boot para configurar automáticamente su aplicación basándose en las dependencias que usted ha añadido a su proyecto.

    El problema podría estar originado por algún problema con su proceso de construcción o empaquetado. Aquí tiene algunas cosas que podría intentar:

    1. Verificar que el archivo META-INF/spring.factories existe en el archivo jar producido por su construcción.
    2. Verificar que el nombre del archivo jar coincide con el nombre especificado en el comando ADD del Dockerfile.
    3. Asegurarse de haber incluido todas las dependencias necesarias de Spring Boot en su archivo de construcción Gradle.
    4. Intentar ejecutar su aplicación fuera del contenedor Docker para ver si el problema está en su aplicación o en la imagen Docker.

    Si ninguna de estas sugerencias resuelve el problema, podría intentar buscar mensajes de errores más detallados o consultar la documentación de Spring Boot para obtener consejos de solución de problemas.

Comments are closed.