简体   繁体   English

带有 Spring Boot 和 SQL 服务器的 Liquibase 为 class SnowflakeDatabase 抛出错误 NoClassDefFOundError

[英]Liquibase with Spring Boot and SQL Server throwing error NoClassDefFOundError for class SnowflakeDatabase

My Spring Boot application is using local SQL server database is failing on startup with error below.我的 Spring Boot 应用程序正在使用本地 SQL 服务器数据库启动失败并出现以下错误。

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'liquibase' defined in class path resource [org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration$LiquibaseConfiguration.class]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: liquibase/database/core/SnowflakeDatabase
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1804) ~[spring-beans-5.3.22.jar:5.3.22]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) ~[spring-beans-5.3.22.jar:5.3.22]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.22.jar:5.3.22]
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.22.jar:5.3.22]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.22.jar:5.3.22]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.22.jar:5.3.22]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.22.jar:5.3.22]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322) ~[spring-beans-5.3.22.jar:5.3.22]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.22.jar:5.3.22]
    at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1154) ~[spring-context-5.3.22.jar:5.3.22]
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:908) ~[spring-context-5.3.22.jar:5.3.22]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) ~[spring-context-5.3.22.jar:5.3.22]
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147) ~[spring-boot-2.7.2.jar:2.7.2]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:734) ~[spring-boot-2.7.2.jar:2.7.2]
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408) ~[spring-boot-2.7.2.jar:2.7.2]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:308) ~[spring-boot-2.7.2.jar:2.7.2]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306) ~[spring-boot-2.7.2.jar:2.7.2]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1295) ~[spring-boot-2.7.2.jar:2.7.2]
    at com.musala.notification.NotificationApplication.main(NotificationApplication.java:10) ~[classes/:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
    at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
    at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) ~[spring-boot-devtools-2.7.2.jar:2.7.2]
Caused by: java.lang.NoClassDefFoundError: liquibase/database/core/SnowflakeDatabase
    at com.datical.liquibase.ext.storedlogic.storedproc.SnowflakeStoredProcedureSnapshotGenerator.getPriority(Unknown Source) ~[liquibase-commercial-4.17.0.jar:na]
    at liquibase.snapshot.SnapshotGeneratorFactory.getGenerators(SnapshotGeneratorFactory.java:84) ~[liquibase-core-4.9.1.jar:na]
    at liquibase.snapshot.SnapshotGeneratorFactory.getContainerTypes(SnapshotGeneratorFactory.java:306) ~[liquibase-core-4.9.1.jar:na]
    at liquibase.snapshot.SnapshotGeneratorFactory.getContainerTypes(SnapshotGeneratorFactory.java:290) ~[liquibase-core-4.9.1.jar:na]
    at liquibase.snapshot.SnapshotGeneratorFactory.has(SnapshotGeneratorFactory.java:101) ~[liquibase-core-4.9.1.jar:na]
    at liquibase.snapshot.SnapshotGeneratorFactory.hasDatabaseChangeLogLockTable(SnapshotGeneratorFactory.java:279) ~[liquibase-core-4.9.1.jar:na]
    at liquibase.lockservice.StandardLockService.hasDatabaseChangeLogLockTable(StandardLockService.java:229) ~[liquibase-core-4.9.1.jar:na]
    at liquibase.lockservice.StandardLockService.init(StandardLockService.java:113) ~[liquibase-core-4.9.1.jar:na]
    at liquibase.lockservice.StandardLockService.acquireLock(StandardLockService.java:286) ~[liquibase-core-4.9.1.jar:na]
    at liquibase.lockservice.StandardLockService.waitForLock(StandardLockService.java:247) ~[liquibase-core-4.9.1.jar:na]
    at liquibase.Liquibase.lambda$update$1(Liquibase.java:214) ~[liquibase-core-4.9.1.jar:na]
    at liquibase.Scope.lambda$child$0(Scope.java:180) ~[liquibase-core-4.9.1.jar:na]
    at liquibase.Scope.child(Scope.java:189) ~[liquibase-core-4.9.1.jar:na]
    at liquibase.Scope.child(Scope.java:179) ~[liquibase-core-4.9.1.jar:na]
    at liquibase.Scope.child(Scope.java:158) ~[liquibase-core-4.9.1.jar:na]
    at liquibase.Liquibase.runInScope(Liquibase.java:2405) ~[liquibase-core-4.9.1.jar:na]
    at liquibase.Liquibase.update(Liquibase.java:211) ~[liquibase-core-4.9.1.jar:na]
    at liquibase.Liquibase.update(Liquibase.java:197) ~[liquibase-core-4.9.1.jar:na]
    at liquibase.integration.spring.SpringLiquibase.performUpdate(SpringLiquibase.java:314) ~[liquibase-core-4.9.1.jar:na]
    at liquibase.integration.spring.SpringLiquibase.afterPropertiesSet(SpringLiquibase.java:269) ~[liquibase-core-4.9.1.jar:na]
    at org.springframework.boot.autoconfigure.liquibase.DataSourceClosingSpringLiquibase.afterPropertiesSet(DataSourceClosingSpringLiquibase.java:46) ~[spring-boot-autoconfigure-2.7.2.jar:2.7.2]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1863) ~[spring-beans-5.3.22.jar:5.3.22]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800) ~[spring-beans-5.3.22.jar:5.3.22]
    ... 23 common frames omitted
Caused by: java.lang.ClassNotFoundException: liquibase.database.core.SnowflakeDatabase
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) ~[na:na]
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) ~[na:na]
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[na:na]
    ... 46 common frames omitted

application.properties应用程序.properties

#
#Liquibase properties
#
spring.liquibase.enabled=true
spring.liquibase.change-log=classpath:db.changelog-base.yaml
spring.liquibase.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.liquibase.url=jdbc:sqlserver://localhost:1434;databaseName=NG1;encrypt=true;trustServerCertificate=true
spring.liquibase.user=sa
spring.liquibase.password=P@ssw0rd
spring.liquibase.liquibase-schema=NOTIFICATION

pom.xml dependency pom.xml 依赖

<dependency>
   <groupId>org.liquibase</groupId>
   <artifactId>liquibase-core</artifactId>
</dependency>

My changelog files are <>-mssql.sql .我的变更日志文件是<>-mssql.sql

db.changelog-base.yaml is in resource folder db.changelog-base.yaml在资源文件夹中

databaseChangeLog:
  - includeAll:
      path: db/changelog/

I was wandering why I it is searching for snowflake database?我在徘徊为什么我正在搜索雪花数据库? Because I am using SQL Server.因为我用的是SQL服务器。 It will be great if I can get a solution for this issue.如果我能找到解决此问题的方法,那就太好了。

A solution or root cause to fix this.解决此问题的解决方案或根本原因。

We solved this issue by setting the liquibase-core version to 4.15.0.我们通过将 liquibase-core 版本设置为 4.15.0 解决了这个问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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