Javaweb学习笔记——Server Tomcat v9.0 Server at localhost failed to start.

  今天在写一个注册功能时遇到了如下错误:

     

    错误显示Tomcat启动不了,查看控制台的错误信息如下:

 

 

四月 21, 2017 5:56:16 下午 org.apache.tomcat.util.digester.SetPropertiesRule begin
警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:login' did not find a matching property.
四月 21, 2017 5:56:16 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Server version:        Apache Tomcat/9.0.0.M19
四月 21, 2017 5:56:16 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Server built:          Mar 27 2017 12:09:59 UTC
四月 21, 2017 5:56:16 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Server number:         9.0.0.0
四月 21, 2017 5:56:16 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: OS Name:               Windows 10
四月 21, 2017 5:56:16 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: OS Version:            10.0
四月 21, 2017 5:56:16 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Architecture:          amd64
四月 21, 2017 5:56:16 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Java Home:             H:\Java8\jre1.8.0_121
四月 21, 2017 5:56:16 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: JVM Version:           1.8.0_121-b13
四月 21, 2017 5:56:16 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: JVM Vendor:            Oracle Corporation
四月 21, 2017 5:56:16 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: CATALINA_BASE:         F:\workspace\workspace-neon\.metadata\.plugins\org.eclipse.wst.server.core\tmp0
四月 21, 2017 5:56:16 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: CATALINA_HOME:         H:\apache-tomcat-9.0.0.M19
四月 21, 2017 5:56:16 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Command line argument: -Dcatalina.base=F:\workspace\workspace-neon\.metadata\.plugins\org.eclipse.wst.server.core\tmp0
四月 21, 2017 5:56:16 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Command line argument: -Dcatalina.home=H:\apache-tomcat-9.0.0.M19
四月 21, 2017 5:56:16 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Command line argument: -Dwtp.deploy=F:\workspace\workspace-neon\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps
四月 21, 2017 5:56:16 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Command line argument: -Djava.endorsed.dirs=H:\apache-tomcat-9.0.0.M19\endorsed
四月 21, 2017 5:56:16 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Command line argument: -Dfile.encoding=GBK
四月 21, 2017 5:56:16 下午 org.apache.catalina.core.AprLifecycleListener lifecycleEvent
信息: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: H:\Java8\jre1.8.0_121\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;H:/Java8/jre1.8.0_121/bin/server;H:/Java8/jre1.8.0_121/bin;H:/Java8/jre1.8.0_121/lib/amd64;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;H:\Java8\jdk1.8.0_121\bin;H:\Java8\jdk1.8.0_121\jre\bin;H:\Android\sdk\tools;H:\Android\sdk\platform-tools;H:\Microsoft SQL Server2008\x86\100\Tools\Binn\;H:\Microsoft SQL Server2008\100\Tools\Binn\;H:\Microsoft SQL Server2008\100\DTS\Binn\;H:\Microsoft SQL Server2008\x86\100\Tools\Binn\VSShell\Common7\IDE\;H:\Microsoft SQL Server2008\x86\100\DTS\Binn\;C:\Users\41823\AppData\Local\Microsoft\WindowsApps;;H:\Microsoft VS Code\bin;H:\Eclipse\eclipse-java-neon\eclipse;;.
四月 21, 2017 5:56:16 下午 org.apache.coyote.AbstractProtocol init
信息: Initializing ProtocolHandler ["http-nio-8080"]
四月 21, 2017 5:56:17 下午 org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
信息: Using a shared selector for servlet write/read
四月 21, 2017 5:56:17 下午 org.apache.coyote.AbstractProtocol init
信息: Initializing ProtocolHandler ["ajp-nio-8009"]
四月 21, 2017 5:56:17 下午 org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
信息: Using a shared selector for servlet write/read
四月 21, 2017 5:56:17 下午 org.apache.catalina.startup.Catalina load
信息: Initialization processed in 1310 ms
四月 21, 2017 5:56:17 下午 org.apache.catalina.core.StandardService startInternal
信息: Starting service Catalina
四月 21, 2017 5:56:17 下午 org.apache.catalina.core.StandardEngine startInternal
信息: Starting Servlet Engine: Apache Tomcat/9.0.0.M19
四月 21, 2017 5:56:18 下午 org.apache.jasper.servlet.TldScanner scanJars
信息: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
四月 21, 2017 5:56:18 下午 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[Catalina].StandardHost[localhost].StandardContext[/login]]
at java.util.concurrent.FutureTask.report(Unknown Source)
at java.util.concurrent.FutureTask.get(Unknown Source)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:959)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:872)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1439)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1429)
at java.util.concurrent.FutureTask.run(Unknown Source)
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
at java.util.concurrent.AbstractExecutorService.submit(Unknown Source)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:953)
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:422)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:793)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.startup.Catalina.start(Catalina.java:655)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
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].StandardContext[/login]]
at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:441)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:198)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1439)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1429)
at java.util.concurrent.FutureTask.run(Unknown Source)
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
at java.util.concurrent.AbstractExecutorService.submit(Unknown Source)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:953)
... 21 more
Caused by: java.lang.IllegalArgumentException: The servlets named [Signup] and [myservlet.Signup] are both mapped to the url-pattern [/Signup] which is not permitted
at org.apache.tomcat.util.descriptor.web.WebXml.addServletMappingDecoded(WebXml.java:328)
at org.apache.tomcat.util.descriptor.web.WebXml.addServletMapping(WebXml.java:321)
at org.apache.catalina.startup.ContextConfig.processAnnotationWebServlet(ContextConfig.java:2391)
at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2068)
at org.apache.catalina.startup.ContextConfig.processAnnotationsWebResource(ContextConfig.java:1954)
at org.apache.catalina.startup.ContextConfig.processAnnotationsWebResource(ContextConfig.java:1948)
at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1153)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:775)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:299)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5095)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
... 27 more


四月 21, 2017 5:56:18 下午 org.apache.catalina.core.ContainerBase startInternal
严重: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: A child container failed during start
at java.util.concurrent.FutureTask.report(Unknown Source)
at java.util.concurrent.FutureTask.get(Unknown Source)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:959)
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:422)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:793)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.startup.Catalina.start(Catalina.java:655)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
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: A child container failed during start
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:968)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:872)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1439)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1429)
at java.util.concurrent.FutureTask.run(Unknown Source)
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
at java.util.concurrent.AbstractExecutorService.submit(Unknown Source)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:953)
... 13 more


四月 21, 2017 5:56:18 下午 org.apache.catalina.startup.Catalina start
严重: The required Server component failed to start so Tomcat is unable to start.
org.apache.catalina.LifecycleException: A child container failed during start
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:968)
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:422)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:793)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.startup.Catalina.start(Catalina.java:655)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:355)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:495)


四月 21, 2017 5:56:18 下午 org.apache.coyote.AbstractProtocol pause
信息: Pausing ProtocolHandler ["http-nio-8080"]
四月 21, 2017 5:56:18 下午 org.apache.coyote.AbstractProtocol pause
信息: Pausing ProtocolHandler ["ajp-nio-8009"]
四月 21, 2017 5:56:18 下午 org.apache.catalina.core.StandardService stopInternal
信息: Stopping service Catalina
四月 21, 2017 5:56:18 下午 org.apache.coyote.AbstractProtocol destroy
信息: Destroying ProtocolHandler ["http-nio-8080"]
四月 21, 2017 5:56:18 下午 org.apache.coyote.AbstractProtocol destroy
信息: Destroying ProtocolHandler ["ajp-nio-8009"]

 

 

    查看错误信息时我们主要查看caused by里的内容,经过分析,主要原因是这一块出了问题:

    错误提示我web.xml里的url-pattern[/Signup]被web.xml里的Signup   和  类包里的Signup   同时匹配,这是不允许的。大家看我web.xml里的内容:

    对于url-pattern而言,这样的命名方式是不允许的,同样取名包名+类名(/myservlet/Signup)这样的格式也是不可以的,因为这样会引起混淆。所以我们把url-pattern里的路径改成/servlet/Signup就可以了,这个名字可以随便取。

 

这是更改后的web.xml文件:

这样就可以运行了。

 

<think>我们讨论的是Tomcat服务器图标的更改。默认情况下,Tomcat使用其自己的图标(通常是一个猫头),但有时我们可能希望将其更改为自定义图标,例如网站favicon或服务器管理界面中的图标。问题中提到的“Tomcatv9.0.37Serveratlocalhost(2)图标更改”可能指的是在浏览器标签页中显示的favicon,或者是Tomcat管理界面中的图标。通常,更改Tomcat图标有两种情况:1.更改Web应用程序的favicon(即浏览器标签页上显示的小图标)。2.更改Tomcat默认的管理界面(如localhost:8080)的图标。对于第一种情况(Web应用程序的favicon),我们只需要在自己的Web应用程序中提供`favicon.ico`文件,并放置在Web应用程序的根目录(例如WEB-INF的同级目录)下即可。浏览器会自动请求该文件。对于第二种情况,要更改Tomcat默认管理界面的图标,我们需要替换Tomcat安装目录下的favicon.ico文件。具体位置在Tomcatwebapps目录下的各个应用(如ROOT,manager,host-manager)中。由于问题中没有明确是哪种情况,我将分别说明:情况一:为自己的Web应用设置favicon-在Web应用的根目录下放置一个名为`favicon.ico`的文件(也可以是其他格式,如.png,但.ico是最广泛支持的)。-或者,在HTML文件的<head>部分指定favicon的链接,例如:<linkrel="icon"href="path/to/favicon.ico"type="image/x-icon"><linkrel="shortcuticon"href="path/to/favicon.ico"type="image/x-icon">情况二:更改Tomcat默认管理界面的图标(例如访问localhost:8080时看到的那个)-找到Tomcat的安装目录。-进入`webapps`子目录,这里有多个Web应用,包括ROOT(对应8080端口访问的主页)、manager、host-manager等。-在每个你想更改图标的Web应用目录中,替换其根目录下的`favicon.ico`文件。例如,要更改ROOT应用的图标,替换`webapps/ROOT/favicon.ico`。-注意:可能需要重启Tomcat才能生效。但是,请注意,直接修改Tomcat自带的Web应用(如ROOT,manager,host-manager)可能会在Tomcat升级时被覆盖。因此,更好的做法是:-备份原始文件。-或者,在升级Tomcat后重新替换。另外,如果只是想更改自己部署的应用的图标,那么只需要在应用中提供favicon.ico即可,不需要修改Tomcat自带的Web应用。由于问题中提到了“Tomcatv9.0.37”,我将给出一个具体的步骤:步骤(更改Tomcat默认管理界面的图标):1.关闭Tomcat服务器。2.进入Tomcat的安装目录,然后进入`webapps`目录。3.进入ROOT目录(这是默认主页的Web应用),将其中的`favicon.ico`文件替换为你自己的图标文件(注意文件名必须是favicon.ico)。4.同样,如果你想更改manager应用的图标,进入`webapps/manager`目录,替换其中的`favicon.ico`。5.启动Tomcat服务器。注意:替换的图标文件必须是.ico格式,且尺寸通常为16x16或32x32像素。如果你没有.ico文件,可以使用在线转换工具将其他格式的图片转换为.ico格式。代码示例:这里没有代码,因为主要是文件替换操作。但我们可以写一个简单的JavaWeb应用,展示如何指定favicon。示例:在一个简单的JSP页面中指定favicon假设我们有一个Web应用,它的结构如下:MyWebApp/index.jspfavicon.ico(放在根目录)在index.jsp中,我们可以显式指定favicon,但通常不需要,因为浏览器会自动查找根目录下的favicon.ico。但为了确保,可以在<head>中添加:```jsp<%@pagecontentType="text/html;charset=UTF-8"language="java"%><html><head><title>MyWebApp</title><linkrel="icon"href="${pageContext.request.contextPath}/favicon.ico"type="image/x-icon"/></head><body><h1>HelloWorld!</h1></body></html>```解释:`${pageContext.request.contextPath}`是获取当前应用的上下文路径,这样无论应用部署在什么路径下,都能正确找到favicon.ico。如果问题中的“(2)”是指两个地方(比如两个不同的Web应用),那么需要分别替换这两个应用的favicon。相关问题:1.如何自定义Tomcat的默认错误页面?2.如何更改Tomcat的启动画面(即启动时控制台显示的Tomcat标志)?3.Web应用中,除了favicon.ico,还有哪些方法可以指定不同尺寸和类型的图标?4.如何为不同的设备(如苹果设备)提供不同的图标尺寸?注意:根据问题要求,最后需要以指定格式提出相关问题。</think>### Tomcat v9.0.37 服务器图标更改指南 要更改 Tomcat 服务器的图标(包括浏览器标签页的 favicon 和管理界面的图标),需要修改两个关键位置的文件。以下是详细步骤: #### 1. **更改浏览器标签页图标 (favicon.ico)** 替换 Tomcat 默认的 favicon.ico 文件: ```bash # 进入 Tomcat 的 ROOT 应用目录 cd $CATALINA_HOME/webapps/ROOT # 备份原始图标(可选) mv favicon.ico favicon.ico.bak # 将你的自定义图标复制到此目录并重命名 cp /path/to/your-custom-icon.ico favicon.ico ``` #### 2. **更改管理界面左上角图标** 替换管理界面(如 `manager/html`)左上角的 Tomcat 图标: ```bash # 进入 manager 应用目录 cd $CATALINA_HOME/webapps/manager # 修改包含图标的 JSP 文件 vi images/tomcat.svg # 或编辑 JSP 中引用图标的代码 ``` 在 `manager/images/` 目录下: - 替换 `tomcat.svg` 或 `asf-logo.svg` 文件 - 或修改 JSP 文件中的图标引用路径(如 `manager.jsp`) #### 3. **修改管理界面标题** 更改浏览器标签页显示的 "Tomcat Web Application Manager" 标题: ```bash vi $CATALINA_HOME/webapps/manager/manager.jsp ``` 找到并修改 `<title>` 标签: ```jsp <title>Your Custom Title</title> ``` #### 4. **重启 Tomcat 生效** 修改后必须重启 Tomcat 服务: ```bash $CATALINA_HOME/bin/shutdown.sh $CATALINA_HOME/bin/startup.sh ``` ### 完整操作示例 假设自定义图标为 `my-logo.ico` 和 `my-logo.svg`: ```bash # 替换 ROOT 应用的 favicon cp my-logo.ico $CATALINA_HOME/webapps/ROOT/favicon.ico # 替换 manager 应用的图标 cp my-logo.svg $CATALINA_HOME/webapps/manager/images/tomcat.svg # 修改 manager 标题 sed -i &#39;s/Tomcat Web Application Manager/My Server Admin/g&#39; \ $CATALINA_HOME/webapps/manager/manager.jsp # 重启 Tomcat $CATALINA_HOME/bin/shutdown.sh $CATALINA_HOME/bin/startup.sh ``` ### 注意事项 1. **图标格式**: - 浏览器标签页图标必须是 `.ico` 格式 - 管理界面图标推荐使用 SVG 或 PNG 2. **缓存问题**: - 清除浏览器缓存后访问 `http://localhost:8080/` 和 `http://localhost:8080/manager/html` 3. **权限**: - 确保 Tomcat 进程有权限读取新图标文件 4. **备用位置**: - 某些版本可能需要在 `$CATALINA_HOME/webapps/host-manager` 重复相同操作 ### 效果验证 访问以下 URL 检查效果: - 主页面:`http://localhost:8080/`(标签页图标) - 管理页面:`http://localhost:8080/manager/html`(左上角图标和标题) ---
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值