spring类路径资源[db/changelog/db.changelog master.yaml]无法解析为url,因为它不存在;运行jar文件时

wwwo4jvm  于 2021-07-13  发布在  Java
关注(0)|答案(0)|浏览(1088)

我想构建一个可执行的jar文件,但在cmd中运行它时遇到了问题。在intellij中运行应用程序时,它可以正常启动。我知道基本上确切的问题已经存在,但它的答案( spring.liquibase.change-log 而不仅仅是 liquibase.change-log )似乎不适用于我的情况。
运行jar文件时,错误的最后一部分如下所示(我希望这是最重要的部分):

  1. Caused by: liquibase.exception.ChangeLogParseException: Error parsing classpath:/db/changelog/db.changelog-master.yaml
  2. at liquibase.parser.core.yaml.YamlChangeLogParser.parse(YamlChangeLogParser.java:83)
  3. at liquibase.Liquibase.getDatabaseChangeLog(Liquibase.java:216)
  4. at liquibase.Liquibase.update(Liquibase.java:189)
  5. at liquibase.Liquibase.update(Liquibase.java:178)
  6. at liquibase.integration.spring.SpringLiquibase.performUpdate(SpringLiquibase.java:368)
  7. at liquibase.integration.spring.SpringLiquibase.afterPropertiesSet(SpringLiquibase.java:316)
  8. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1845)
  9. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1782)
  10. ... 61 common frames omitted
  11. Caused by: java.io.FileNotFoundException: class path resource [db/changelog/db.changelog-master.yaml] cannot be resolved to URL because it does not exist
  12. at org.springframework.core.io.ClassPathResource.getURL(ClassPathResource.java:202)
  13. at liquibase.integration.spring.SpringLiquibase$SpringResourceOpener.getResourcesAsStream(SpringLiquibase.java:601)
  14. at liquibase.util.StreamUtil.singleInputStream(StreamUtil.java:186)
  15. at liquibase.parser.core.yaml.YamlChangeLogParser.parse(YamlChangeLogParser.java:26)
  16. ... 68 common frames omitted

应用程序属性:

  1. spring.datasource.url=jdbc:postgresql://localhost:5432/postgres
  2. spring.datasource.username=p******
  3. spring.datasource.password=t****
  4. spring.datasource.driver-class-name=org.postgresql.Driver
  5. spring.liquibase.change-log=classpath:db/changelog/db.changelog-master.xml

db.changelog-master.xml文件:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <databaseChangeLog
  3. xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
  6. http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.8.xsd">
  7. <include file="db/changelog/db.changelog_tables.xml"/>
  8. </databaseChangeLog>

pom.xml文件:

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-web</artifactId>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.springframework.boot</groupId>
  8. <artifactId>spring-boot-starter-test</artifactId>
  9. <scope>test</scope>
  10. </dependency>
  11. <dependency>
  12. <groupId>org.springframework.boot</groupId>
  13. <artifactId>spring-boot-starter-data-jpa</artifactId>
  14. </dependency>
  15. <dependency>
  16. <groupId>org.postgresql</groupId>
  17. <artifactId>postgresql</artifactId>
  18. <scope>runtime</scope>
  19. </dependency>
  20. <dependency>
  21. <groupId>org.springframework.boot</groupId>
  22. <artifactId>spring-boot-starter-jdbc</artifactId>
  23. </dependency>
  24. <dependency>
  25. <groupId>org.liquibase</groupId>
  26. <artifactId>liquibase-core</artifactId>
  27. </dependency>
  28. <dependency>
  29. <groupId>com.h2database</groupId>
  30. <artifactId>h2</artifactId>
  31. <scope>test</scope>
  32. </dependency>
  33. <dependency>
  34. <groupId>org.junit.jupiter</groupId>
  35. <artifactId>junit-jupiter</artifactId>
  36. <version>5.7.0</version>
  37. <scope>test</scope>
  38. </dependency>
  39. <dependency>
  40. <groupId>org.apache.httpcomponents</groupId>
  41. <artifactId>httpclient</artifactId>
  42. <scope>test</scope>
  43. </dependency>
  44. </dependencies>

就像有同样问题的人一样,我不明白它为什么要搜索文件 [db/changelog/db.changelog-master.yaml] 当我指定属性时: spring.liquibase.change-log=classpath:db/changelog/db.changelog-master.xml 在application.properties文件中。或者我完全误解了smt,因为在intellij中运行应用程序和运行jar文件是两件完全不同的事情?
我会感激任何帮助。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题