【问题标题】:java - illegalStateException: Cannot find changelog location: class path resource (liquibase)java - 非法状态异常:找不到更改日志位置:类路径资源(liquibase)
【发布时间】:2017-06-18 19:41:52
【问题描述】:

当我尝试运行我的 Spring Boot 应用程序时出现此错误。我是java和spring开发的新手。如果您需要更多信息,请告诉我。我不确定“找不到更改日志位置...”是什么意思

2017-02-01 16:19:22.543 ERROR 17315 --- [  restartedMain] o.s.boot.SpringApplication               : Application startup failed

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration$LiquibaseConfiguration': Invocation of init method failed; nested exception is java.lang.IllegalStateException: Cannot find changelog location: class path resource [db/changelog/db.changelog-master.yaml] (please add changelog or check your Liquibase configuration)
    at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:137)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:408)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1575)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:372)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1128)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1022)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:512)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:296)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
    at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1081)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:856)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:761)
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:371)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1186)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1175)
    at com.ccc.Application.main(Application.java:18)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49)
Caused by: java.lang.IllegalStateException: Cannot find changelog location: class path resource [db/changelog/db.changelog-master.yaml] (please add changelog or check your Liquibase configuration)
    at org.springframework.util.Assert.state(Assert.java:392)
    at org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration$LiquibaseConfiguration.checkChangelogExists(LiquibaseAutoConfiguration.java:92)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:366)
    at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:311)
    at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:134)
    ... 34 common frames omitted

【问题讨论】:

    标签: java spring spring-boot liquibase


    【解决方案1】:

    创建或编辑文件application.properties并添加主变更日志文件的地址:

    liquibase.change-log=classpath:/db/changelog-profiles/changelog-master.xml
    

    此外,您可以在默认地址中创建您的主变更日志文件(如@austin 回答中所述)

    注意:请注意,如果您使用的是 Spring Boot 2.0,则该属性被命名为 spring.liquibase.change-log 而不是 liquibase.change-log

    来源:Spring Boot 2 - Migration GuideSpring Boot 2 - Release Notes

    【讨论】:

    • 为什么,当我添加这些行时,我的 IDE 是否告诉我“无法解析 'liquidbase' 和 'changelog' 的配置属性”??
    • @tatsu,你有没有把它们放在任何 application.properties 或 application.yml 文件中?如果您将它们放在其他属性文件中(例如 liquibase.properties),您应该将此文件的地址添加到您的 pom.xml
    • 有一个名为“resources”的文件夹,其中有一个“application.properties”文件。我已经把我的 jdbd 数据库信息放在那里了。我的项目中没有其他此类文件。应该有几个?
    • 我不知道这是否可以帮助你:你需要为 liquibase 设置这些参数: enable:true/change-log: classpath:/db/changelog-master.xml/user: admin /密码:admin/ url:jdbc:postgresql://localhost:5432/DBName。同样在 pom 文件中,您需要所需的依赖项\。
    • 使用 Spring Boot 2 时,该属性被命名为 spring.liquibase.change-log
    【解决方案2】:

    我解决了这个问题: *Springboot 2.0 未使用 *使用 GRADLE

    1. application.properties 中的条目 liquibase.change-log=classpath:db/changelog/db.changelog-master.yaml

    2. 存储此文件的 db.changelog-master.yaml 路径:src/main/resources/db/changelog/db.changelog-master.yaml

    3. db.changelog-master.yaml 的内容:

    databaseChangeLog:
      - includeAll:
          path: db/changelog/changes/
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-14
      • 2021-10-23
      • 2020-02-12
      • 1970-01-01
      • 2015-01-27
      • 1970-01-01
      • 2015-11-09
      • 2016-06-15
      相关资源
      最近更新 更多