如何在spring xml配置文件中修复intellij错误?

时间:2016-07-08 10:49:19

标签: java spring intellij-idea gradle

我遇到了问题:

enter image description here

XML的文件:

<?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
                               http://www.springframework.org/schema/beans/spring-beans.xsd" >

    <bean id="spaceship" class="com.examples.spring.Cruiser">
        <constructor-arg ref="energyweapon" />
        <constructor-arg name="str" value="hello" />
    </bean>

    <bean id="energyweapon" class="com.examples.spring.PlasmaCannon" />

</beans>

尽管IDEA错误,我的项目仍然成功编译并运行。有什么问题吗?

Gradle安装:

------------------------------------------------------------
Gradle 2.14
------------------------------------------------------------

Build time:   2016-06-14 07:16:37 UTC
Revision:     cba5fea19f1e0c6a00cc904828a6ec4e11739abc

Groovy:       2.4.4
Ant:          Apache Ant(TM) version 1.9.6 compiled on June 29 2015
JVM:          1.8.0_73 (Oracle Corporation 25.73-b02)
OS:           Windows 7 6.1 amd64

的build.gradle:

group 'com.examples.spring'
version '1.0-SNAPSHOT'

apply plugin: 'java'

sourceCompatibility = 1.5

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.11'
    compile 'org.springframework:spring-context:4.3.1.RELEASE'
}

Intellij IDEA:
IntelliJ IDEA社区版2016.1.3

2 个答案:

答案 0 :(得分:1)

看起来由于某些原因,IDEA正在查看较旧的spring-beans.xsd来验证您的文档。在name中使用<constructor-arg>属性为correct in the documentation。我有几个想法:

  1. 确保IDEA已从Gradle文件中正确刷新其依赖项列表。在“项目”工具窗口的“外部库”下,是否列出了您使用的Spring版本,而没有其他版本?如果没有,请仔细检查它是否正在读取您认为的Gradle文件并尝试刷新它。 (我没有使用Gradle,只使用Maven,但是Maven选项卡有一个“刷新”按钮,所以我假设它对Gradle的工作方式类似。)
  2. 您可以尝试添加对spring-beans依赖项的直接引用,但不应该这样做。
  3. 如果您无法让IDEA自动查看正确的文件,您可以将xsi:schemalocation中的XSD路径从http://www.springframework.org/schema/beans/spring-beans.xsd更改为http://www.springframework.org/schema/beans/spring-beans-4.3.xsd。这应该这样做,但是当您更新到更新版本的Spring时,您可能需要更新版本号。 (我倾向于使用特定版本,只是为了强迫自己在更新Spring时浏览每个文件,但是可能没有理由强迫自己这样做,因为它应该工作你是这样做的。)

答案 1 :(得分:0)

来自文档xsd文件:

构造函数参数列表中参数的确切名称。 只需要避免含糊不清,例如在2个参数的情况下 完全相同的类型。 注意:这需要调试符号 存储在类文件中以反省参数名称!

第一部分是告诉这不是必要的属性,你可以只设置值,spring会按顺序自动装配,第二部分我不确定是什么意思,但这可能是你看到和错误的原因。