无法找到 XML 模式命名空间的 Spring NamespaceHandler [http://www.springframework.org/schema/integration/twitter]

Posted

技术标签:

【中文标题】无法找到 XML 模式命名空间的 Spring NamespaceHandler [http://www.springframework.org/schema/integration/twitter]【英文标题】:Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/integration/twitter] 【发布时间】:2015-02-25 11:31:00 【问题描述】:

我正在尝试编写一个采用 twitter 搜索流的应用程序。我的 pom.xml 看起来像这样:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-      instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
<modelVersion>4.0.0</modelVersion>  
<groupId>co.edureka</groupId>  
<artifactId>Spring_Integration_Module_Examples</artifactId>  
<version>0.0.1-SNAPSHOT</version>  
<dependencies>  
<dependency>  
    <groupId>org.springframework</groupId>  
    <artifactId>spring-core</artifactId>  
    <version>4.1.1.RELEASE</version>  
</dependency>  
<dependency>  
    <groupId>org.springframework</groupId>  
    <artifactId>spring-context</artifactId>  
    <version>4.1.1.RELEASE</version>  
</dependency>  
<dependency>  
    <groupId>org.springframework</groupId>  
    <artifactId>spring-beans</artifactId>  
    <version>4.1.1.RELEASE</version>  
</dependency>  

  <dependency>  
 <groupId>org.springframework.social</groupId>  
 <artifactId>spring-social-twitter</artifactId>  
 <version>1.0.2.RELEASE</version>  
 </dependency> 

  <dependency>  
    <groupId>org.springframework.integration</groupId>  
    <artifactId>spring-integration-core</artifactId>  
    <version>3.0.0.RELEASE</version>  
  </dependency>  
</dependencies>  
</project>

我还有以下 si-components 配置代码:

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

<int-twitter:search-inbound-channel-adapter
    query="#springintegration" channel="inboundTweets">
    <int:poller fixed-rate="5000" max-messages-per-poll="3" />
</int-twitter:search-inbound-channel-adapter>

<int:transformer input-channel="inboundTweets"
    output-channel="tweetsText" expression="payload.getText()" />

<int-file:outbound-channel-adapter channel="tweetsText" 
id="consumer-file-adapter" 
directory="file:C:\\Users\\sagio\\Documents\\workspace-sts-3.6.3.RELEASE\\tweeterStream\\data" />

<bean id="twitterTemplate" class="org.springframework.social.twitter.api.impl.TwitterTemplate">
    <constructor-arg value=.... />
    <constructor-arg value=.... />
    <constructor-arg value=.... />
    <constructor-arg value=.... />
</bean>

<int:channel id="inboundTweets" />
<int:channel id="tweetsText" />
</beans>

当我尝试运行它时,出现以下异常: 配置问题:找不到 XML 模式命名空间的 Spring NamespaceHandler [http://www.springframework.org/schema/integration/twitter]

这个问题的正确配置是什么?

【问题讨论】:

您没有 spring-integration-twitter 依赖项。同时补充一点,我强烈建议迁移到 Spring Integration 的 4.x 分支,因为它可以更好地支持 Spring 4。 【参考方案1】:

在您的依赖项列表中,您缺少 spring-integration-twitter 依赖项。

<dependency>  
    <groupId>org.springframework.integration</groupId>  
    <artifactId>spring-integration-core</artifactId>  
    <version>4.1.1.RELEASE</version>  
</dependency>  

我建议升级到最新版本的 Spring Integration,因为它使用 Spring 4.x 的特性比 3.x 分支更好。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-      instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>co.edureka</groupId>
    <artifactId>Spring_Integration_Module_Examples</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <properties>
        <spring.version>4.1.3.RELEASE</spring.version>
        <spring-integration.version>4.1.1.RELEASE</spring-integration.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>$spring.version</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.integration</groupId>
            <artifactId>spring-integration-core</artifactId>
            <version>$spring-integration.version</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.integration</groupId>
            <artifactId>spring-integration-twitter</artifactId>
            <version>$spring-integration.version</version>
        </dependency>
    </dependencies>
</project>

在添加 spring-context 依赖项时,已包含 spring-corespring-beans 依赖项。

或者更好的是,您可能希望使用Spring IO Platform 来对齐所有版本。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-      instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>co.edureka</groupId>
    <artifactId>Spring_Integration_Module_Examples</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.integration</groupId>
            <artifactId>spring-integration-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.integration</groupId>
            <artifactId>spring-integration-twitter</artifactId>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>io.spring.platform</groupId>
                <artifactId>platform-bom</artifactId>
                <version>1.1.0.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>

【讨论】:

以上是关于无法找到 XML 模式命名空间的 Spring NamespaceHandler [http://www.springframework.org/schema/integration/twitter]的主要内容,如果未能解决你的问题,请参考以下文章

错误“无法找到 XML 模式命名空间的 Spring NamespaceHandler”

错误“无法找到 XML 模式命名空间的 Spring NamespaceHandler”

Spring,JMS - 无法找到 XML 模式命名空间的 Spring NamespaceHandler

Spring 3.0 - 无法找到 XML 模式命名空间的 Spring NamespaceHandler [http://www.springframework.org/schema/securit

Spring 3.0 - 无法找到 XML 模式命名空间的 Spring NamespaceHandler [http://www.springframework.org/schema/securit

使用 spring 4 获取“无法找到 XML 模式命名空间 [http://www.springframework.org/schema/security] 的 Spring NamespaceHa