简体   繁体   中英

exception is java.lang.NoClassDefFoundError: liquibase/Scope

I have multimodule project using Spring Boot and liquibase. If i run it usring mvn spring-boot:run it works, but if i run it using intellej i get this error:

2022-07-15 14:22:36 ERROR 6908 --- [           main] o.s.boot.SpringApplication               : Application run failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'liquibase' defined in class path resource [org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration$LiquibaseConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [liquibase.integration.spring.SpringLiquibase]: Factory method 'liquibase' threw exception; nested exception is java.lang.NoClassDefFoundError: liquibase/Scope
    at spring.beans@5.3.20/org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:658)
    at spring.beans@5.3.20/org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:638)
    at spring.beans@5.3.20/org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1352)
    at spring.beans@5.3.20/org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1195)
    at spring.beans@5.3.20/org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582)
    at spring.beans@5.3.20/org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542)
    at spring.beans@5.3.20/org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)
    at spring.beans@5.3.20/org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
    at spring.beans@5.3.20/org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
    at spring.beans@5.3.20/org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)
    at spring.beans@5.3.20/org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322)
    at spring.beans@5.3.20/org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)
    at spring.context@5.3.20/org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1154)
    at spring.context@5.3.20/org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:908)
    at spring.context@5.3.20/org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583)
    at spring.boot@2.7.0/org.springframework.boot.web.reactive.context.ReactiveWebServerApplicationContext.refresh(ReactiveWebServerApplicationContext.java:66)
    at spring.boot@2.7.0/org.springframework.boot.SpringApplication.refresh(SpringApplication.java:734)
    at spring.boot@2.7.0/org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408)
    at spring.boot@2.7.0/org.springframework.boot.SpringApplication.run(SpringApplication.java:308)
    at spring.boot@2.7.0/org.springframework.boot.SpringApplication.run(SpringApplication.java:1306)
    at spring.boot@2.7.0/org.springframework.boot.SpringApplication.run(SpringApplication.java:1295)
    at package/module1.Application.main(Application.java:23)
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [liquibase.integration.spring.SpringLiquibase]: Factory method 'liquibase' threw exception; nested exception is java.lang.NoClassDefFoundError: liquibase/Scope
    at spring.beans@5.3.20/org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185)
    at spring.beans@5.3.20/org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653)
    ... 21 common frames omitted
Caused by: java.lang.NoClassDefFoundError: liquibase/Scope
    at liquibase.integration.spring.SpringLiquibase.<init>(SpringLiquibase.java:56)
    at spring.boot.autoconfigure@2.7.0/org.springframework.boot.autoconfigure.liquibase.DataSourceClosingSpringLiquibase.<init>(DataSourceClosingSpringLiquibase.java:36)
    at spring.boot.autoconfigure@2.7.0/org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration$LiquibaseConfiguration.createSpringLiquibase(LiquibaseAutoConfiguration.java:113)
    at spring.boot.autoconfigure@2.7.0/org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration$LiquibaseConfiguration.liquibase(LiquibaseAutoConfiguration.java:90)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
    at java.base/java.lang.reflect.Method.invoke(Method.java:577)
    at spring.beans@5.3.20/org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
    ... 22 common frames omitted
Caused by: java.lang.ClassNotFoundException: liquibase.Scope
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    ... 29 common frames omitted

Process finished with exit code 1

Module info of my module:

open module module1 {
    requires spring.boot;
    requires spring.cloud.commons;
    requires spring.boot.autoconfigure;
    requires lombok;
    requires spring.context;
    requires spring.core;
    requires org.slf4j;
    requires spring.data.jpa;
    requires org.apache.logging.slf4j;
    requires spring.web;
    requires com.fasterxml.jackson.annotation;
    requires spring.cloud.openfeign.core;
    requires org.bouncycastle.provider;
    requires org.apache.commons.codec;
    requires io.netty.handler;
    requires java.transaction;
    requires spring.beans;;
}

Any ideas how to fix it? I will aprecciate it!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

My guess is that your Liquibase files are in a folder named liquibase . Rename it to something else like liquibase-migration-files or equivalent, but definitely different from just liquibase .

My interpretation is that having a liquibase folder make the ClassLoader think the package liquibase is declared in the module where your Liquibase configuration is stored, thus the ClassLoader doesn't try to look in the unnamed module where the Liquibase library is located.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM