0

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

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

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

Spring 安全警告 Eclipse

我还尝试将 -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>

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

谢谢。

4

2 回答 2

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) 的问题。

于 2013-07-08T09:41:13.797 回答
0

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

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

于 2013-07-09T22:42:15.403 回答