我在Eclipse(Neon)中有一个Spring-MVC项目,我使用Spring安全性。这已经与Maven建立了。 细节是: - Eclipse Neon - tomcat 8.5.9(同样的问题也是tomcat 8.0), - 春季4.3.5 - Spring security 4.2.1
当我在POM.xml文件中添加spring-security-config依赖项时,tomcat无法启动,我得到以下内容:
SEVERE: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/offers]]
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:192)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:939)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:872)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1419)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/offers]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
... 6 more
Caused by: org.apache.catalina.LifecycleException: Failed to start component [org.apache.catalina.webresources.StandardRoot@50d16c34]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4842)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4974)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 6 more
Caused by: org.apache.catalina.LifecycleException: Failed to initialize component [org.apache.catalina.webresources.JarResourceSet@1f030c21]
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:112)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:140)
at org.apache.catalina.webresources.StandardRoot.startInternal(StandardRoot.java:708)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 9 more
Caused by: java.lang.IllegalArgumentException: java.util.zip.ZipException: invalid LOC header (bad signature)
at org.apache.catalina.webresources.AbstractSingleArchiveResourceSet.initInternal(AbstractSingleArchiveResourceSet.java:113)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)
... 12 more
Caused by: java.util.zip.ZipException: invalid LOC header (bad signature)
at java.util.zip.ZipFile.read(Native Method)
at java.util.zip.ZipFile.access$1400(ZipFile.java:60)
at java.util.zip.ZipFile$ZipFileInputStream.read(ZipFile.java:717)
at java.util.zip.ZipFile$ZipFileInflaterInputStream.fill(ZipFile.java:419)
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:158)
at sun.misc.IOUtils.readFully(IOUtils.java:65)
at java.util.jar.JarFile.getBytes(JarFile.java:425)
at java.util.jar.JarFile.getManifestFromReference(JarFile.java:193)
at java.util.jar.JarFile.getManifest(JarFile.java:180)
at org.apache.catalina.webresources.AbstractSingleArchiveResourceSet.initInternal(AbstractSingleArchiveResourceSet.java:111)
... 13 more
Ιαν 18, 2017 2:10:10 ΜΜ org.apache.catalina.core.ContainerBase startInternal
SEVERE: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:192)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:939)
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:422)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:793)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.startup.Catalina.start(Catalina.java:655)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:355)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:495)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1419)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.catalina.LifecycleException: A child container failed during start
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:947)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:872)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 6 more
Ιαν 18, 2017 2:10:10 ΜΜ org.apache.catalina.startup.Catalina start
SEVERE: The required Server component failed to start so Tomcat is unable to start.
org.apache.catalina.LifecycleException: Failed to start component [StandardServer[8005]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
at org.apache.catalina.startup.Catalina.start(Catalina.java:655)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:355)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:495)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardService[Catalina]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:793)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 7 more
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:422)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 9 more
Caused by: org.apache.catalina.LifecycleException: A child container failed during start
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:947)
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 11 more
Ιαν 18, 2017 2:10:10 ΜΜ org.apache.coyote.AbstractProtocol pause
INFO: Pausing ProtocolHandler ["http-nio-8080"]
Ιαν 18, 2017 2:10:10 ΜΜ org.apache.coyote.AbstractProtocol pause
INFO: Pausing ProtocolHandler ["ajp-nio-8009"]
Ιαν 18, 2017 2:10:10 ΜΜ org.apache.catalina.core.StandardService stopInternal
INFO: Stopping service Catalina
Ιαν 18, 2017 2:10:10 ΜΜ org.apache.coyote.AbstractProtocol destroy
INFO: Destroying ProtocolHandler ["http-nio-8080"]
Ιαν 18, 2017 2:10:10 ΜΜ org.apache.coyote.AbstractProtocol destroy
INFO: Destroying ProtocolHandler ["ajp-nio-8009"]
Ιαν 18, 2017 2:10:10 ΜΜ org.apache.catalina.deploy.NamingResourcesImpl cleanUp
WARNING: Failed to retrieve JNDI naming context for container [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/offers]] so no cleanup was performed for that container
javax.naming.NamingException: No naming context bound to this class loader
at org.apache.naming.ContextBindings.getClassLoader(ContextBindings.java:268)
at org.apache.catalina.deploy.NamingResourcesImpl.cleanUp(NamingResourcesImpl.java:993)
at org.apache.catalina.deploy.NamingResourcesImpl.stopInternal(NamingResourcesImpl.java:976)
at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:226)
at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5425)
at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:226)
at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:264)
at org.apache.catalina.core.ContainerBase.removeChild(ContainerBase.java:854)
at org.apache.catalina.core.ContainerBase.destroyInternal(ContainerBase.java:1036)
at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:297)
at org.apache.catalina.core.ContainerBase.removeChild(ContainerBase.java:854)
at org.apache.catalina.core.ContainerBase.destroyInternal(ContainerBase.java:1036)
at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:297)
at org.apache.catalina.core.StandardService.destroyInternal(StandardService.java:585)
at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:297)
at org.apache.catalina.core.StandardServer.destroyInternal(StandardServer.java:883)
at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:297)
at org.apache.catalina.startup.Catalina.start(Catalina.java:659)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:355)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:495)
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>com.caveofprogramming.spring.web</groupId>
<artifactId>offers</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<warSourceDirectory>WebContent</warSourceDirectory>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.3.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.3.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.3.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.3.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.5.RELEASE</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.40</version>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.1.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate</artifactId>
<version>3.5.4-Final</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.3.4.Final</version>
</dependency>
<dependency>
<groupId>commons-validator</groupId>
<artifactId>commons-validator</artifactId>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<version>4.2.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-aspects</artifactId>
<version>4.2.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>4.2.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>4.2.1.RELEASE</version>
</dependency>
</dependencies>
</project>
我在另一台计算机上使用相同的设置(但使用Spring版本4.3.4和Spring安全性4.2.1)并不值得。它可以毫无问题地工作。
我已经多次从头开始设置Eclipse项目,但是当我达到添加spring-security-config依赖项的时候,当我运行项目时,tomcat无法启动。 如果我不添加spring-security-config依赖项,我会得到“无法找到XML架构命名空间的Spring NamespaceHandler”异常。 任何有关此事的帮助将不胜感激。 感谢
这是web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>COP_spring-mvc</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<description></description>
<display-name>offers</display-name>
<servlet-name>offers</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>offers</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<description>MySQL Test App</description>
<resource-ref>
<description>Spring DB Connection</description>
<res-ref-name>jdbc/spring</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:com/caveofprogramming/spring/web/config/dao-context.xml
classpath:com/caveofprogramming/spring/web/config/security-context.xml
classpath:com/caveofprogramming/spring/web/config/service-context.xml
</param-value>
</context-param>
<filter>
<display-name>springSecurityFilterChain</display-name>
<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>
</web-app>
答案 0 :(得分:0)
-我遇到了和您一样的问题。 -在search.maven.org中搜索spring-security-web Spring Security有两个依赖项。 (1)spring-security-web(2)spring-security-config。 还有Spring安全性和其他项目Spring Framework(涵盖了core,aop,mvc)。这是两个单独的项目。它们以不同的发布周期运行。项目之间的版本号通常不同步(叹息……非常令人沮丧)(Spring团队正在努力为将来的版本解决此问题)。 -常见的陷阱是使用不兼容的项目。 -我使用这两个项目的不同版本重新运行该项目。 -显然这是您解决问题的方法。 -因此,您需要在spring安全性和spring框架之间找到兼容的版本。 -这是我找到的兼容版本的列表
更新-Spring Security 5.1.5 Spring Security 5.1.5于2019年4月2日发布。这是一个维护/错误修复版本。 Spring Security 5.1.5与Spring Framework 5.1.6兼容 如果要使用最新版本,请更新您的Maven POM文件以使用以下兼容版本 5.1.6。发布
更新-Spring Security 5.1.4 Spring Security 5.1.4于2019年2月14日发布。这是一个维护/错误修复版本。 Spring Security 5.1.4与Spring Framework 5.1.5兼容 如果要使用最新版本,请更新您的Maven POM文件以使用以下兼容版本 5.1.5。发布
更新-Spring Security 5.1.3 Spring Security 5.1.3于2019年1月10日发布。这是一个维护/错误修复版本。 Spring Security 5.1.3与Spring Framework 5.1.4兼容 如果要使用最新版本,请更新Maven POM文件以使用以下兼容版本
<springframework.version>5.1.4.RELEASE</springframework.version>
<springsecurity.version>5.1.3.RELEASE</springsecurity.version>
更新-Spring Security 5.1.2 Spring Security 5.1.2于2018年11月29日发布。这是一个维护/错误修复版本。 Spring Security 5.1.2与Spring Framework 5.1.3兼容 如果要使用最新版本,请更新Maven POM文件以使用以下兼容版本
<springframework.version>5.1.3.RELEASE</springframework.version>
<springsecurity.version>5.1.2.RELEASE</springsecurity.version>
更新-Spring Security 5.1.1 Spring Security 5.1.1于2018年10月16日发布。这是一个维护/错误修复版本。 Spring Security 5.1.1与Spring Framework 5.1.1兼容 如果要使用最新版本,请更新Maven POM文件以使用以下兼容版本
<springframework.version>5.1.1.RELEASE</springframework.version>
<springsecurity.version>5.1.1.RELEASE</springsecurity.version>
更新-Spring Security 5.1.0 Spring Security 5.1.0于2018年9月27日发布。这是一个维护/错误修复版本。 Spring Security 5.1.0与Spring Framework 5.1.0兼容 如果要使用最新版本,请更新Maven POM文件以使用以下兼容版本
<springframework.version>5.1.0.RELEASE</springframework.version>
<springsecurity.version>5.1.0.RELEASE</springsecurity.version>
更新-Spring Security 5.0.7 Spring Security 5.0.7于2018年7月26日发布。这是一个维护/错误修复版本。 Spring Security 5.0.7与Spring Framework 5.0.8兼容 如果要使用最新版本,请更新Maven POM文件以使用以下兼容版本
<springframework.version>5.0.8.RELEASE</springframework.version>
<springsecurity.version>5.0.7.RELEASE</springsecurity.version>
更新-Spring Security 5.0.6 Spring Security 5.0.6于2018年6月13日发布。这是一个维护/错误修复版本。 Spring Security 5.0.6与Spring Framework 5.0.7兼容 如果要使用最新版本,请更新Maven POM文件以使用以下兼容版本
<springframework.version>5.0.7.RELEASE</springframework.version>
<springsecurity.version>5.0.6.RELEASE</springsecurity.version>
更新-Spring Security 5.0.5 Spring Security 5.0.5于2018年5月8日发布。这是一个维护/错误修复版本。 Spring Security 5.0.5与Spring Framework 5.0.6兼容 如果要使用最新版本,请更新Maven POM文件以使用以下兼容版本
<springframework.version>5.0.6.RELEASE</springframework.version>
<springsecurity.version>5.0.5.RELEASE</springsecurity.version>
更新-Spring Security 5.0.4 Spring Security 5.0.4于2018年4月5日发布。这是一个维护/错误修复版本。 Spring Security 5.0.4与Spring Framework 5.0.5兼容 如果要使用最新版本,请更新Maven POM文件以使用以下兼容版本
<springframework.version>5.0.5.RELEASE</springframework.version>
<springsecurity.version>5.0.4.RELEASE</springsecurity.version>
更新-Spring Security 5.0.3 Spring Security 5.0.3已于2018年2月28日这一周发布。这是一个维护/错误修复版本。 Spring Security 5.0.3与Spring Framework 5.0.4兼容 如果要使用最新版本,请更新Maven POM文件以使用以下兼容版本
<springframework.version>5.0.4.RELEASE</springframework.version>
<springsecurity.version>5.0.3.RELEASE</springsecurity.version>
更新-Spring Security 5.0.2 Spring Security 5.0.2已于2018年2月20日这一周发布。这是一个维护/错误修复版本。 Spring Security 5.0.2与Spring Framework 5.0.4兼容 如果要使用最新版本,请更新Maven POM文件以使用以下兼容版本
<springframework.version>5.0.4.RELEASE</springframework.version>
<springsecurity.version>5.0.2.RELEASE</springsecurity.version>
更新Spring Security 5.0.1 Spring Security 5.0.1已于2018年1月24日这一周发布。这是一个维护/错误修复版本。 Spring Security 5.0.1与Spring Framework 5.0.3兼容 如果要使用最新版本,请更新Maven POM文件以使用以下兼容版本
<springframework.version>5.0.3.RELEASE</springframework.version>
<springsecurity.version>5.0.1.RELEASE</springsecurity.version>