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

3

我试图将Spring集成到OSGI Karaf中,但遇到了问题。我制作了一个良好的WAB文件并进行了安装。安装后,当Web容器(Apache Felix)尝试解析spring-servlet.xml时,出现以下异常:

org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/context]

我已经阅读了关于此问题的几乎所有帖子,但是没有找到任何解决方法。spring-servlet.xml 文件位于 /WEB-INF/spring/。

该文件的位置为:

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

  <context:component-scan base-package="xyz"/>
  <mvc:annotation-driven/>
</beans>

pom.xml文件

<!-- Spring core & mvc -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>${spring.version}</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>org.springframework.web.servlet</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-asm</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring.version}</version>
    </dependency>

我拥有所有与Spring相关的JAR文件,如web、webmvc、beans、core和context。 - AlexGo
Spring上下文jar包的版本是否与模式匹配(例如,在你的情况下是3.0)?您的应用程序服务器lib文件夹中是否有任何不同版本的Spring库?在模式位置中,您已将上下文和bean指向3.0版本,但mvc指向默认版本4.1,这可能不是问题,但请尝试将正确的版本添加到模式位置中。 - madteapot
你的模式指向3.0而不是3.1,如果你的jar版本是3.1,那么请将模式版本更正为3.1。 - madteapot
目前已经进行了修改,但问题仍然存在。 - AlexGo
尝试添加以下内容: <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>3.0.2.RELEASE</version> </dependency> - Arpit Aggarwal
显示剩余5条评论
1个回答

0

我已经解决了这个问题。基本上,问题在于我没有在Karaf的feature.xml文件中安装所有的spring功能,而通过“全部”我指的是所有的核心、aop、servlet等。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接