intellij 和嵌入式 Jetty - 使用名称创建 bean 时出错

intellij and embedded Jetty - Error creating bean with name

TLDR

当 运行 将 Jetty 嵌入 IntelliJ 时出现 Error creating bean with name... 错误,但当 运行 在 IntelliJ 外部使用相同的代码时则不会 - 在独立的 Jetty 服务器中。

深入

我们有一个在 Jetty 中运行的 Web 应用程序。

直到一周前,我才能够通过 Intellij 的嵌入式 Jetty 启动和使用该应用程序。

几天前,我的一位同事更新了一个 beans 构造函数,并向其中添加了一个他创建的新 bean。

所以在zoowebappcontext.xml他向bean构造函数添加了一个新条目:

 <bean id="animalsService" class="java.util.ArrayList">
    <constructor-arg>
        <list>
            <ref bean="pets.catService" />
            ....
            <ref bean="pets.dogService" />  <-- The new item
            ...

并且在 applicationContext.xml 文件中,他添加了一个新的 bean 定义,它看起来与那里的所有其他 bean 非常相似:

    <bean id="pets.dogService"
      class="com.example.DogServiceImpl"
      parent="...">
    <property name="..." ref="..."/>
</bean>

奇怪的是:如果我 mvn clean install 这个项目,有一个新的 zoo.war ,将它移动到 Jetty 的 webapp 文件夹并以 [=41] 启动应用程序=]独立Jetty,应用启动无报错。

但是,当 运行 intellij 的 嵌入式 Jetty 中的应用程序时,该应用程序尝试启动并最终失败并出现此错误:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'animalsService' defined in class path resource [zoowebappContext.xml]: Cannot resolve reference to bean 'pets.dogService' while setting constructor argument with key [14]; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'pets.dogSerice' is defined

将代码移动到上述更改之前的提交,intellij 可以毫无问题地启动。

似乎 intelliJ 有什么东西卡在了它的系统中,就像问题开始时一样,它只是在某个时候消失了。

一些可能对 "reset" IntelliJ 有帮助的事情(none 他们自己解决了问题):

  • 多次重启 IntelliJ
  • 正在重装计算机
  • 在不同的 GIT 分支之间来回切换
  • 文件 -> 使缓存无效/重新启动...

同样,none 个项目本身解决了它。