为什么Intellij IDEA无法识别ResourceBundleMessageSource类的defaultEncoding字段?

时间:2018-03-01 11:18:01

标签: java spring intellij-idea

我在Spring MVC文件的xml文件中定义了一个ResourceBundleMessageSource bean。它的定义如下:

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
  <property name="basename" value="messages" />
  <property name="defaultEncoding" value="UTF-8" />
</bean>

然而,Intellij将defaultEncoding标记为红色并弹出Can not resolve property

根据this documentationResourceBundleMessageSource具有从defaultEncoding类继承的AbstractResourceBasedMessageSource属性。上面的代码在另一个Spring MVC项目中运行良好。

My Spring依赖版本为5.0.4,IDEA版本为2017.2.1。

这种奇怪行为的原因是什么?是bug吗?

附录:当我使用IDEA对ResourceBundleMessageSource类进行反编译时,它会显示此类扩展AbstractMessageSource,而不是文档所说的AbstractResourceBasedMessageSource

ResourceBundleMessageSource替换为ReloadableResourceBundleMessageSource不会出错。

1 个答案:

答案 0 :(得分:1)

我终于解决了这个问题。我的项目中存在泽西 - 春天依赖:

<dependency>
  <groupId>com.sun.jersey.contribs</groupId>
  <artifactId>jersey-spring</artifactId>
  <version>1.19.3</version>
</dependency>

这完全取决于旧版本的Spring - 3.0.0.RC1。 我还明确地在pom.xml文件中包含Spring 5.0.4.RELEASE依赖项。这导致了不同版本之间的冲突,Maven正在解决冲突,转而支持旧版本3.0.0.RC1。我决定删除jersey-spring依赖,现在它工作正常。