【问题标题】:gradle bootRun fails to run but runs successfully in IntelliJgradle bootRun 运行失败但在 IntelliJ 中运行成功
【发布时间】:2020-11-21 17:27:45
【问题描述】:

我在 gradle 6、java 11 上有一个 spring boot 项目。该项目在 IntelliJ IDE 中成功运行。但是,当我尝试通过 gradle bootRun 运行时。我遇到了一个奇怪的错误。依赖项目的一个类以某种方式妨碍了项目。以下是我看到的错误消息。我看到其他人报告的类似错误,但没有明确的解决方案。任何帮助将不胜感激。

2020-08-01 02:29:41.842  INFO 5990 --- [           main] c.t.i.cloud.saga.hotel.HotelApplication  : Starting HotelApplication on sseshac-in-la02.local with PID 5990 (/Users/sseshac/src/saga_demo/hotel/build/classes/java/main started by sseshac in /Users/sseshac/src/saga_demo/hotel)
2020-08-01 02:29:41.847  INFO 5990 --- [           main] c.t.i.cloud.saga.hotel.HotelApplication  : No active profile set, falling back to default profiles: default
2020-08-01 02:29:42.015  WARN 5990 --- [           main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [com.demo.iec.cloud.saga.hotel.HotelApplication]; nested exception is java.io.FileNotFoundException: class path resource [com/demo/iec/cloud/saga/SagaCommandListener.class] cannot be opened because it does not exist
2020-08-01 02:29:42.039 ERROR 5990 --- [           main] o.s.boot.SpringApplication               : Application run failed

org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [com.demo.iec.cloud.saga.hotel.HotelApplication]; nested exception is java.io.FileNotFoundException: class path resource [com/demo/iec/cloud/saga/SagaCommandListener.class] cannot be opened because it does not exist
        at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:188) ~[spring-context-5.2.8.RELEASE.jar:5.2.8.RELEASE]
        at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:319) ~[spring-context-5.2.8.RELEASE.jar:5.2.8.RELEASE]
        at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:236) ~[spring-context-5.2.8.RELEASE.jar:5.2.8.RELEASE]
        at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:280) ~[spring-context-5.2.8.RELEASE.jar:5.2.8.RELEASE]
        at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:96) ~[spring-context-5.2.8.RELEASE.jar:5.2.8.RELEASE]
        at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:707) ~[spring-context-5.2.8.RELEASE.jar:5.2.8.RELEASE]
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:533) ~[spring-context-5.2.8.RELEASE.jar:5.2.8.RELEASE]
        at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:143) ~[spring-boot-2.3.2.RELEASE.jar:2.3.2.RELEASE]
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:758) ~[spring-boot-2.3.2.RELEASE.jar:2.3.2.RELEASE]
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:750) ~[spring-boot-2.3.2.RELEASE.jar:2.3.2.RELEASE]
        at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) ~[spring-boot-2.3.2.RELEASE.jar:2.3.2.RELEASE]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) ~[spring-boot-2.3.2.RELEASE.jar:2.3.2.RELEASE]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1237) ~[spring-boot-2.3.2.RELEASE.jar:2.3.2.RELEASE]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) ~[spring-boot-2.3.2.RELEASE.jar:2.3.2.RELEASE]
        at com.demo.iec.cloud.saga.hotel.HotelApplication.main(HotelApplication.java:15) ~[main/:na]

我还可以确认依赖类确实并编译到预期的文件夹中

./saga/build/classes/java/main/com/demo/iec/cloud/saga/SagaCommandListener.class

这是一个包含三个 Spring Boot 项目的多模块项目

./hotel
./saga
./flight

酒店和航班都依赖于 saga 项目,SagaCommandLister 是 saga 项目的一部分。

【问题讨论】:

    标签: spring-boot gradle


    【解决方案1】:

    当一个 spring boot 项目依赖于另一个应用了“also”spring boot 插件的项目时,就会发生这种情况。那么依赖项目中的类就有这个错误。不确定这是否被视为错误。但无论如何删除saga 中的插件声明解决了它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-06
      • 2017-02-25
      • 1970-01-01
      • 1970-01-01
      • 2018-12-02
      • 1970-01-01
      • 2019-10-04
      相关资源
      最近更新 更多