Skip to content
Advertisement

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!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Advertisement

Answer

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.

User contributions licensed under: CC BY-SA
5 People found this is helpful
Advertisement