1、最近在学习Apache下的一个权限框架shiro。在eclipse上建了一个web项目,使用maven引入对应的依赖。在spring和springMVC等配置都准备好后,准备跑一下JSP页面确保环境没问题,跑的时候使用的也是maven的tomcat7插件,在pom.xml的插件配置处配置如下:
- <build>
- <finalName>shiro</finalName>
- <!-- tomcat7 配置插件 -->
- <plugins>
- <plugin>
- <groupId>org.apache.tomcat.maven</groupId>
- <artifactId>tomcat7-maven-plugin</artifactId>
- <configuration>
- <port>8080</port>
- <path>/</path>
- <uriEncoding>UTF-8</uriEncoding>
- </configuration>
- </plugin>
- </plugins>
- </build>
clean tomcat7:run
3、此时报错,如下:
- [INFO] Scanning for projects...
- [WARNING]
- [WARNING] Some problems were encountered while building the effective model for com.shiro.test.spring:shiro-test-spring:war:0.0.1-SNAPSHOT
- [WARNING] 'build.plugins.plugin.version' for org.apache.tomcat.maven:tomcat7-maven-plugin is missing. @ line 114, column 12
- [WARNING]
- [WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
- [WARNING]
- [WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
- [WARNING]
- [INFO]
- [INFO] ------------------------------------------------------------------------
- [INFO] Building shiro-test-spring Maven Webapp 0.0.1-SNAPSHOT
- [INFO] ------------------------------------------------------------------------
- [INFO]
- [INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ shiro-test-spring ---
- [INFO] Deleting D:\WorkSpace\EclipseWorkSpace\shiro-test-spring\target
- [INFO]
- [INFO] >>> tomcat7-maven-plugin:2.2:run (default-cli) > process-classes @ shiro-test-spring >>>
- [INFO]
- [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ shiro-test-spring ---
- [WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
- [INFO] Copying 2 resources
- [INFO]
- [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ shiro-test-spring ---
- [INFO] Nothing to compile - all classes are up to date
- [INFO]
- [INFO] <<< tomcat7-maven-plugin:2.2:run (default-cli) < process-classes @ shiro-test-spring <<<
- [INFO]
- [INFO] --- tomcat7-maven-plugin:2.2:run (default-cli) @ shiro-test-spring ---
- [INFO] Running war on http://localhost:8080/
- [INFO] Creating Tomcat server configuration at D:\WorkSpace\EclipseWorkSpace\shiro-test-spring\target\tomcat
- [INFO] create webapp with contextPath:
- 一月 02, 2017 2:01:36 下午 org.apache.coyote.AbstractProtocol init
- 信息: Initializing ProtocolHandler ["http-bio-8080"]
- 一月 02, 2017 2:01:36 下午 org.apache.catalina.core.StandardService startInternal
- 信息: Starting service Tomcat
- 一月 02, 2017 2:01:36 下午 org.apache.catalina.core.StandardEngine startInternal
- 信息: Starting Servlet Engine: Apache Tomcat/7.0.47
- 一月 02, 2017 2:01:38 下午 org.apache.catalina.core.ContainerBase startInternal
- 严重: A child container failed during start
- java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].StandardContext[]]
- 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:1123)
- at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:800)
- at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
- at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
- at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
- 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[Tomcat].StandardHost[localhost].StandardContext[]]
- at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
- ... 6 more
- Caused by: java.lang.LinkageError: loader constraint violation: loader (instance of org/apache/catalina/loader/WebappClassLoader) previously initiated loading for a different type with name "javax/servlet/ServletContext"
- at java.lang.ClassLoader.defineClass1(Native Method)
- at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
- at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
- at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
- at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
- at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
- at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
- at java.security.AccessController.doPrivileged(Native Method)
- at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
- at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1191)
- at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1669)
- at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
- at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:167)
- at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5423)
- at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
- ... 6 more
- 一月 02, 2017 2:01:38 下午 org.apache.catalina.core.ContainerBase startInternal
- 严重: A child container failed during start
- java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].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:1123)
- at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:302)
- at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
- at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443)
- at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
- at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:732)
- at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
- at org.apache.catalina.startup.Tomcat.start(Tomcat.java:341)
- at org.apache.tomcat.maven.plugin.tomcat7.run.AbstractRunMojo.startContainer(AbstractRunMojo.java:1238)
- at org.apache.tomcat.maven.plugin.tomcat7.run.AbstractRunMojo.execute(AbstractRunMojo.java:592)
- at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
- at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
- at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
- at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
- at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
- at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
- at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
- at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
- at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
- at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
- at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
- at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
- at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
- at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
- 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.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
- at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
- at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
- at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
- Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost]]
- at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
- at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
- at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
- 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:1131)
- at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:800)
- at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
- ... 6 more
- [INFO] ------------------------------------------------------------------------
- [INFO] BUILD FAILURE
- [INFO] ------------------------------------------------------------------------
- [INFO] Total time: 3.132 s
- [INFO] Finished at: 2017-01-02T14:01:38+08:00
- [INFO] Final Memory: 20M/336M
- [INFO] ------------------------------------------------------------------------
- [ERROR] Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin:2.2:run (default-cli) on project shiro-test-spring: Could not start Tomcat: Failed to start component [StandardServer[-1]]: Failed to start component [StandardService[Tomcat]]: Failed to start component [StandardEngine[Tomcat]]: A child container failed during start -> [Help 1]
- [ERROR]
- [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
- [ERROR] Re-run Maven using the -X switch to enable full debug logging.
- [ERROR]
- [ERROR] For more information about the errors and possible solutions, please read the following articles:
- [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>servlet-api</artifactId>
- <version>2.5</version>
- <strong><span style="color:#ff0000;"><scope>provided</scope></span></strong>
- </dependency>
6、再次使用上面的命令启动tomcat,此时问题解决。