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 个项目本身解决了它。
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 个项目本身解决了它。