当前位置: 首页 > 知识库问答 >
问题:

Eclipse STS在本地运行Spring Boot和子项目

聂煜
2023-03-14

我有以下项目结构:

root project
|-- controller
|-- core
|-- widgets
    |-- widgetA
    |-- widgetB

这些项目都内置到罐子里,除了控制器。然后将 jar 部署到类文件夹,控制器使用上下文.xml来指定其位置。

这一切在部署期间都工作得很好(除了Tomcat的‘redeploy’没有重新部署,我怀疑是类加载器的问题,但是卸载/部署工作得很好)。然而,我们目前不能在STS中本地运行它,因为控制器需要一个来自‘widgets’项目的bean,而系统找不到它。

当我将控制器项目作为Spring Boot应用程序执行时,项目开始得很好。它加载并发现“核心”项目中定义的beans。但是由于某种原因,Spring没有扫描“widgets”项目。同样,在部署时,Spring会很好地扫描它们(我假设是因为context.xml定义了要加载的jar资源)。但我似乎就是想不出如何让STS“看到”这个项目。

编辑:为了清楚起见,这是我得到的错误:

May 22, 2018 2:32:00 PM org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext refresh
WARNING: Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'Controller': Unsatisfied dependency expressed through field 'widgetMap'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'java.util.Map<java.lang.String, com.mycompany.project.widgets.WidgetInterface>' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
System is shutting down
May 22, 2018 2:32:00 PM org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor shutdown
INFO: Shutting down ExecutorService 'getAsyncExecutor'
May 22, 2018 2:32:00 PM org.apache.catalina.core.StandardService stopInternal
INFO: Stopping service [Tomcat]
May 22, 2018 2:32:00 PM org.springframework.boot.autoconfigure.logging.ConditionEvaluationReportLoggingListener logAutoConfigurationReport
INFO: 

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
May 22, 2018 2:32:00 PM org.springframework.boot.diagnostics.LoggingFailureAnalysisReporter report
SEVERE: 

***************************
APPLICATION FAILED TO START
***************************

Description:

Field widgetMap in com.mycompany.project.controller.Controller required a bean of type 'com.mycompany.project.widgets.WidgetInterface' that could not be found.


Action:

Consider defining a bean of type 'com.mycompany.project.widgets.WidgetInterface' in your configuration.

共有1个答案

宋斌
2023-03-14

我解决了这个问题。

结果是我没有在我的构建路径中添加单独的小部件,而只是添加了“小部件”类。

因为我使用的是@Autowired Map对象,所以在构建路径上至少需要一个WidgetInterface实现。由于小部件实现项目不存在,它无法正确地实例化地图,并且正在出错。

 类似资料:
  • 我有一个基本的SpringBoot应用程序。使用Spring初始值设定项、嵌入式Tomcat、Thymeleaf模板引擎,并将包作为可执行的JAR文件。是一个带有Spring Boot的多模块项目,该项目将有3个模块。这里是父模块pom。xml 这里是模块核心 这里是模块web: 从父根目录,我使用以下方法生成所有模块: 但问题是tdk-web-0.0.2-SNAPSHOT。jar不包含tdk-c

  • 本地运行模式 本地运行模式主要用于测试功能是否正确。目前本地运行模式仅支持一个Worker(可以有多个Task)和一个PS。可以通过配置选项angel.deploy.mode来使用本地运行模式,具体的参数配置可参考Angel系统参数 1. 运行环境准备 Java >= 1.8 Angel发布包 angel-\-bin.zip 配置好HADOOP_HOME和JAVA_HOME环境变量,解压Angel

  • 我习惯于做出反应并执行以使我的应用程序在本地运行。但是,当我在新项目上运行该脚本时,它会提示没有开始脚本。经进一步检查,没有。 如果这是我的的样子,我如何让它在本地运行? 这是一个Laravel环境,后端使用PHP,前端使用Vue。我觉得自己真的很愚蠢,因为我不知道这一点,但当我搜索时,我也没有找到任何东西。 我正在使用PhpStorm,我下载了XAMPP、Composer和PHP。我不确定我错过

  • 航班类别:package com.rahul.flightreservation.entities; 表说明:ID航班号运营航空公司出发城市到达城市日期出发估计日期出发时间 错误:Hibernate:from Fligher where departurecity=?和到达=?和DateofDeparture=?2020-06-28 20:32:13.138警告5744---[nio-8083-e

  • 如果我不在合适的StackExchange论坛,请建议我在哪里提问: 我在一家公司工作,他编写了处理敏感数据的软件。为了防止软件被复制(软件盗版),很久以前就决定使用许可证制度。 这个系统运行良好,但对我的公司和客户来说都是一个很大的负担,因此我正在寻找其他方法。 我发现的一种方法是SaaS,但我看到了一个巨大的缺点:Saas在互联网上工作,这意味着本地数据被上传到云上(因此是互联网),这让客户感

  • 在尝试运行我的第一个HelloWorld应用程序时,我发现了以下异常: org.springframework.beans.factory.beanDefinitionStoreException:未能读取候选组件类嵌套异常为java.lang.IllegalStateException:由于找不到org/springframework/dao/dataAccessException,无法计算or