2016-01-22 33 views
-3

我想用Eclipse和Apache TomCat 7在Java中構建一個簡單的Servletjava.lang.IllegalArgumentException:名爲[abc]和[Testing]的servlet都映射到不允許的url-pattern [/ welcome]

所以我已經下載了我的本地pc上的Tomcat 7.0,解壓到c:\下。

我創建了一個簡單的Dinamyc web項目,那我也添加一個簡單的Servlet是這樣的:

import java.io.IOException; 
import javax.servlet.Servlet; 
import javax.servlet.ServletConfig; 
import javax.servlet.ServletException; 
import javax.servlet.ServletRequest; 
import javax.servlet.ServletResponse; 
import javax.servlet.annotation.WebServlet; 

/** 
* Servlet implementation class Testing 
*/ 
@WebServlet("/welcome") 
public class Testing implements Servlet { 

    /** 
    * Default constructor. 
    */ 
    public Testing() { 
     // TODO Auto-generated constructor stub 
    } 

    /** 
    * @see Servlet#init(ServletConfig) 
    */ 
    public void init(ServletConfig config) throws ServletException { 
     // TODO Auto-generated method stub 
    } 

    /** 
    * @see Servlet#destroy() 
    */ 
    public void destroy() { 
     // TODO Auto-generated method stub 
    } 

    /** 
    * @see Servlet#getServletConfig() 
    */ 
    public ServletConfig getServletConfig() { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    /** 
    * @see Servlet#getServletInfo() 
    */ 
    public String getServletInfo() { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    /** 
    * @see Servlet#service(ServletRequest request, ServletResponse response) 
    */ 
    public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { 
     // TODO Auto-generated method stub 
    } 

} 

這是我的web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> 
    <display-name>TestServlet</display-name> 

    <servlet> 
    <servlet-name>abc</servlet-name> 
    <servlet-class>Testing</servlet-class> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>abc</servlet-name> 
    <url-pattern>/welcome</url-pattern> 
    </servlet-mapping> 

    <welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
    <welcome-file>index.htm</welcome-file> 
    <welcome-file>index.jsp</welcome-file> 
    <welcome-file>default.html</welcome-file> 
    <welcome-file>default.htm</welcome-file> 
    <welcome-file>default.jsp</welcome-file> 
    </welcome-file-list> 


</web-app> 

但是,如果我嘗試運行應用程序在服務器上我有這個錯誤:

gen 22, 2016 9:21:26 AM org.apache.catalina.core.AprLifecycleListener init 
INFORMAZIONI: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files (x86)\Java\jdk1.7.0_71\bin;C:\windows\Sun\Java\bin;C:\windows\system32;C:\windows;C:/Program Files (x86)/Java/jre1.8.0_66/bin/client;C:/Program Files (x86)/Java/jre1.8.0_66/bin;C:/Program Files (x86)/Java/jre1.8.0_66/lib/i386;C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\Java\jre1.8.0_66\bin;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\AMD APP\bin\x86_64;C:\Program Files (x86)\AMD APP\bin\x86;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\windows\system32;C:\windows;C:\windows\System32\Wbem;C:\windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files (x86)\Toshiba\Bluetooth Toshiba Stack\sys\;C:\Program Files (x86)\Toshiba\Bluetooth Toshiba Stack\sys\x64\;C:\Program Files (x86)\Windows Live\Shared;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\;C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\;C:\Program Files (x86)\MySQL\MySQL Server 5.5\bin;C:\TomcatA\bin;C:\Program Files (x86)\Java\jre1.8.0_66\bin;D:\adt-bundle-windows-x86-20130522\sdk\tools;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files\Samsung\AllShare Framework DMS\1.3.23\;C:\Program Files\Samsung\AllShare Framework DMS\1.3.23\64bit\;C:\Python27;c:\Python27\Scripts;C:\SDKfolder\naoqi-sdk\include;C:\SDKfolder;C:\Program Files (x86)\Skype\Phone\;C:\Users\michele.castriotta\Downloads\apache-maven-3.3.9-bin\apache-maven-3.3.9\bin;D:\eclipse\eclipse_mars;;. 
gen 22, 2016 9:21:26 AM org.apache.tomcat.util.digester.SetPropertiesRule begin 
AVVERTENZA: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:TestServlet' did not find a matching property. 
gen 22, 2016 9:21:27 AM org.apache.coyote.AbstractProtocol init 
INFORMAZIONI: Initializing ProtocolHandler ["http-bio-8080"] 
gen 22, 2016 9:21:27 AM org.apache.coyote.AbstractProtocol init 
INFORMAZIONI: Initializing ProtocolHandler ["ajp-bio-8009"] 
gen 22, 2016 9:21:27 AM org.apache.catalina.startup.Catalina load 
INFORMAZIONI: Initialization processed in 1586 ms 
gen 22, 2016 9:21:27 AM org.apache.catalina.core.StandardService startInternal 
INFORMAZIONI: Starting service Catalina 
gen 22, 2016 9:21:27 AM org.apache.catalina.core.StandardEngine startInternal 
INFORMAZIONI: Starting Servlet Engine: Apache Tomcat/7.0.47 
gen 22, 2016 9:21:28 AM org.apache.catalina.util.SessionIdGenerator createSecureRandom 
INFORMAZIONI: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [231] milliseconds. 
gen 22, 2016 9:21:28 AM org.apache.catalina.core.ContainerBase startInternal 
GRAVE: A child container failed during start 
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/TestServlet]] 
    at java.util.concurrent.FutureTask.report(FutureTask.java:122) 
    at java.util.concurrent.FutureTask.get(FutureTask.java:188) 
    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:262) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/TestServlet]] 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) 
    ... 6 more 
Caused by: java.lang.IllegalArgumentException: The servlets named [abc] and [Testing] are both mapped to the url-pattern [/welcome] which is not permitted 
    at org.apache.catalina.deploy.WebXml.addServletMapping(WebXml.java:335) 
    at org.apache.catalina.startup.ContextConfig.processAnnotationWebServlet(ContextConfig.java:2466) 
    at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2148) 
    at org.apache.catalina.startup.ContextConfig.processAnnotationsJndi(ContextConfig.java:2071) 
    at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1978) 
    at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1300) 
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:878) 
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:376) 
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) 
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5322) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    ... 6 more 

gen 22, 2016 9:21:28 AM org.apache.catalina.core.ContainerBase startInternal 
GRAVE: 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:188) 
    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.Catalina.start(Catalina.java:691) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:322) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:456) 
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].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:262) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    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 

gen 22, 2016 9:21:28 AM org.apache.catalina.startup.Catalina start 
GRAVE: 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:154) 
    at org.apache.catalina.startup.Catalina.start(Catalina.java:691) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:322) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:456) 
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardService[Catalina]] 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) 
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:732) 
    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:154) 
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443) 
    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:1131) 
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:302) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    ... 11 more 

gen 22, 2016 9:21:28 AM org.apache.coyote.AbstractProtocol pause 
INFORMAZIONI: Pausing ProtocolHandler ["http-bio-8080"] 
gen 22, 2016 9:21:28 AM org.apache.coyote.AbstractProtocol pause 
INFORMAZIONI: Pausing ProtocolHandler ["ajp-bio-8009"] 
gen 22, 2016 9:21:28 AM org.apache.catalina.core.StandardService stopInternal 
INFORMAZIONI: Stopping service Catalina 
gen 22, 2016 9:21:28 AM org.apache.coyote.AbstractProtocol destroy 
INFORMAZIONI: Destroying ProtocolHandler ["http-bio-8080"] 
gen 22, 2016 9:21:28 AM org.apache.coyote.AbstractProtocol destroy 
INFORMAZIONI: Destroying ProtocolHandler ["ajp-bio-8009"] 
+0

您的日誌中提供了所有需要的信息。你不明白什麼? – Andremoniy

+0

「名爲[abc]和[Testing]的servlet都映射到不允許的url-pattern [/ welcome]」,是否有意義? – Aakash

+0

好的,但我該如何解決這個問題? – bircastri

回答

1

當你想要映射servlet到某個路徑,你應該點web.xml中的servlet 在servlet中註釋@WebServlet。因此,目前您必須從web.xml中刪除servlet或<servlet-mapping>塊中的註釋。

相關問題