【问题标题】:Eclipse Spring Security Warning 'unable to load namespacehandler'Eclipse Spring 安全警告“无法加载命名空间处理程序”
【发布时间】:2013-07-07 13:00:53
【问题描述】:

我正在尝试使用 Eclipse 创建我的第一个 Spring/Maven Web 应用程序,但我的 spring-security.xml 配置文件中出现了这个警告,这让我疯了好几天!

我试图从其他人那里找到解决方案(因为这似乎是一个常见问题),但我找到的所有解决方案都对我不起作用。最常见的似乎是添加 spring-security-config.jar ,但我已经得到了。

这是警告的图片。如果我添加它,旁边也会出现相同的警告。

我还尝试将 -3.2 添加到 bean 和安全 .xsd 以及我能想到的所有其他数字的组合。

这些是我的 pom.xml 依赖项:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <spring.version>4.0.0.M1</spring.version>
    <spring.security.version>3.2.0.M2</spring.security.version>
    <jstl.version>1.2.1</jstl.version>
</properties>
<dependencies>
    <!-- Spring Dependencies -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</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-jdbc</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aop</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <!-- Spring Security Dependencies -->
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-core</artifactId>
        <version>${spring.security.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-web</artifactId>
        <version>${spring.security.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-config</artifactId>
        <version>${spring.security.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-taglibs</artifactId>
        <version>${spring.security.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-acl</artifactId>
        <version>${spring.security.version}</version>
    </dependency>
    <!-- JSTL Dependencies -->
    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>jstl-api</artifactId>
        <version>${jstl.version}</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>jstl</artifactId>
        <version>${jstl.version}</version>
    </dependency>
    <!-- MySQL Database Driver -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.25</version>
    </dependency>
</dependencies>

这是我的 web.xml:

<web-app xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.0"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee     http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<servlet>
    <servlet-name>mvc-dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>mvc-dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        /WEB-INF/mvc-dispatcher-servlet.xml
        /WEB-INF/spring-database.xml
        /WEB-INF/spring-security.xml
    </param-value>
</context-param>
<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

如果有人有任何想法可能导致 eclipse 中的警告,请随时告诉我。如果您还需要更多信息,请告诉我。

谢谢。

【问题讨论】:

  • 清除工作区并重新构建。有时日食会发出错误的警报..
  • 嗨 ritesh。我已经通过 Eclipse 中的 Project -> Clean 进行了尝试。这实际上是我第二次从头开始重新制作该项目。不过感谢您的建议!

标签: java spring web-applications spring-security


【解决方案1】:

您可以使用的所有 xsd 模式都存储在某个 jar 文件中。在这种情况下,它将是spring-security-config-3.2.0.M2.jar。在 Eclipse 中打开它(Project Explorer -> Your project -> Java Resources -> Libraries -> Maven Dependencies -> spring-security-config-3.2.0.M2.jar)。 您可以在META-INF/spring.schemas 文件中找到可用模式的列表。通常所有的 shcemas 都在org.springframework.security.config 包中(例如org/springframework/security/config/spring-security-3.1.xsd)。确保使用那里可用的模式之一。如果不是这种情况,则更新您的安全 xml 文件。否则如果你能找到相应的文件,那就是 Eclipse (Project -> Clean) 的问题。

【讨论】:

  • 嗨,Maksym,感谢您的回复。我已经查看了该文件,并且似乎我正在使用的 (spring-security.xsd) 映射到 -3.2.xsd 文件。我也尝试过添加 -3.2 自己以及其他人,但没有任何运气。不幸的是,在 Eclipse 中清理项目也不能解决问题。
  • 我确实有另一个与 Maven 相关的问题。在 pom.xml 文件中添加依赖项时,maven 似乎试图从它在我的配置文件(user/.m2/repository)下创建的文件夹中获取库文件。我一直在做的是将 jar 放入这些文件夹并转到 Maven -> 在 Eclipse 中更新项目。这似乎摆脱了 pom.xml 错误,但这就是我需要做的吗?也许这是我添加导致此问题的罐子的方式?谢谢。
  • 通常您不需要修改/.m2/repository 文件夹中的任何内容。您需要做的就是在 pom.xml 中声明新的依赖关系并保存它。在 Eclipse 中,所有必要的 Maven 插件 mvn dependency:resolve 将自动为您调用(相应的新 jar 将被下载然后存储在 /.m2/repository 并作为库添加到 eclipse 项目中)。
  • 您的 xml 标头在哪里? &lt;?xml version="1.0" encoding="UTF-8"?&gt;
  • 这很奇怪。 Eclipse 没有自动为我下载依赖项。您是否必须在 pom.xml 中设置存储库位置?关于 xml 标头,我最初拥有它,但注意到我的错误日志中出现了一些奇怪的警告。我查了一下,有人建议将其添加到 pom.xml 文件中的 标记中:&lt;project.build.sourceEncoding&gt;UTF-8&lt;/project.build.sourceEncoding&gt;。我刚刚重新添加了 xml 标头,警告似乎不再存在。命名空间处理程序警告仍然存在。感谢您迄今为止的帮助。
【解决方案2】:

我可能已经找到了解决这个问题的方法。在我的例子中,Eclipse 被设置为使用 2.3 版而不是 3.0 版的动态 Web 模块。

我通过右键单击我的项目来解决这个问题,转到Properties。在Project Facets 下取消勾选Dynamic Web Module 并按应用。然后将版本号更改为3.0 并重新勾选并重新申请。完成后,右键单击项目,转到Maven 并按Update Project...

【讨论】:

    猜你喜欢
    • 2012-04-27
    • 1970-01-01
    • 2011-01-15
    • 2013-02-25
    • 2012-12-17
    • 1970-01-01
    • 2017-01-30
    • 2017-10-18
    • 2014-11-10
    相关资源
    最近更新 更多