intellij和嵌入式Jetty-创建名为的bean时出错



TLDR

在IntelliJ中运行嵌入式Jetty时,但在IntelliJ之外运行相同代码时(在独立的Jetty服务器中(,出现Error creating bean with name...错误。

深度

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

直到一周前,我还能够启动并使用Intellij的嵌入式Jetty应用程序。

几天前,我的一位同事更新了其中一个bean构造函数,并为其添加了一个他创建的新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文件夹,并将应用程序作为独立的Jetty启动,则应用程序启动时不会出错。

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

org.springframework.beans.factory.BeanCreationException:创建类路径资源[zoowebappContext.xml]中定义的名称为"animalsService"的bean时出错:在使用键[14]设置构造函数参数时,无法解析对bean"pets.dogService"的引用;嵌套异常为org.springframework.beans.factory.NoSuchBeanDefinitionException:未定义名为"pets.dogSerice"的bean

将代码移动到上述更改之前的提交,intellij能够顺利启动。

似乎intelliJ的系统中有一些东西卡住了,就在问题开始时,它在某个时候就消失了。

一些可能有助于"重置"IntelliJ的东西(它们都没有自己解决问题(:

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

再说一遍,没有一个项目本身能解决这个问题。

相关内容

最新更新