2017-03-08 151 views
-1

我目前正在爲學校製作一個項目,在這個項目中我必須建立一個基本的登錄系統,問題是當我使用@Webservlet註釋時,我的tomcat服務器不會開始,這是我的servlet代碼:「本地主機無法啓動服務器的Tomcat 8.0服務器」當使用@Webservlet註釋時無法啓動tomcat服務器

`package controller; 

import java.io.IOException; 
import java.util.ArrayList; 
import java.util.List; 

import javax.servlet.RequestDispatcher; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import javax.ws.rs.NotAuthorizedException; 

import handlers.RequestHandler; 
import service.Service; 


@WebServlet("/Controller") 
public class Controller extends HttpServlet { 
private static final long serialVersionUID = 1L; 
private Service service = new Service(); 
private ControllerFactory controllerFactory = new ControllerFactory(); 



public Controller() { 
    super(); 

} 


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

    processRequest(request, response); 




} 


protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    processRequest(request, response); 
} 

protected void processRequest(HttpServletRequest request, 
     HttpServletResponse response) throws ServletException, IOException { 

    String action = request.getParameter("action"); 
    String destination = "index.jsp"; 
    if (action != null) { 
     RequestHandler handler; 
     try { 
      handler = controllerFactory.getController(action, service); 
      destination = handler.handleRequest(request, response); 
     } 
     catch (NotAuthorizedException exc) { 
      List<String> errors = new ArrayList<String>(); 
      errors.add(exc.getMessage()); 
      request.setAttribute("errors", errors); 
      destination="index.jsp"; 
     } 
    } 
    RequestDispatcher view = request.getRequestDispatcher(destination); 
    view.forward(request, response); 



} 

} 

`

開始我得到這個堆棧跟蹤和錯誤消息的服務器時:

mrt 08, 2017 3:59:10 PM org.apache.tomcat.util.digester.SetPropertiesRule 

begin 
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:messagingWebApp' did not find a matching property. 
mrt 08, 2017 3:59:10 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Server version:  Apache Tomcat/8.0.32 
mrt 08, 2017 3:59:10 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Server built:   Feb 2 2016 19:34:53 UTC 
mrt 08, 2017 3:59:10 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Server number:   8.0.32.0 
mrt 08, 2017 3:59:10 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: OS Name:    Windows 10 
mrt 08, 2017 3:59:10 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: OS Version:   10.0 
mrt 08, 2017 3:59:10 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Architecture:   amd64 
mrt 08, 2017 3:59:10 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Java Home:    C:\Program Files\Java\jdk1.8.0_102\jre 
mrt 08, 2017 3:59:10 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: JVM Version:   1.8.0_102-b14 
mrt 08, 2017 3:59:10 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: JVM Vendor:   Oracle Corporation 
mrt 08, 2017 3:59:10 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: CATALINA_BASE:   C:\Users\Arno\Documents\tomcat\apache-tomcat-8.0.32 
mrt 08, 2017 3:59:10 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: CATALINA_HOME:   C:\Users\Arno\Documents\tomcat\apache-tomcat-8.0.32 
mrt 08, 2017 3:59:10 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Command line argument: -Dcatalina.base=C:\Users\Arno\Documents\tomcat\apache-tomcat-8.0.32 
mrt 08, 2017 3:59:10 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Command line argument: -Dcatalina.home=C:\Users\Arno\Documents\tomcat\apache-tomcat-8.0.32 
mrt 08, 2017 3:59:10 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Command line argument: -Dwtp.deploy=C:\Users\Arno\Documents\tomcat\apache-tomcat-8.0.32\wtpwebapps 
mrt 08, 2017 3:59:10 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Command line argument: -Djava.endorsed.dirs=C:\Users\Arno\Documents\tomcat\apache-tomcat-8.0.32\endorsed 
mrt 08, 2017 3:59:10 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Command line argument: -Dfile.encoding=Cp1252 
mrt 08, 2017 3:59:10 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent 
INFO: 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\Java\jdk1.8.0_102\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:/Program Files/Java/jdk1.8.0_102/bin/../jre/bin/server;C:/Program Files/Java/jdk1.8.0_102/bin/../jre/bin;C:/Program Files/Java/jdk1.8.0_102/bin/../jre/lib/amd64;C:\ProgramData\Oracle\Java\javapath;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 (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Brackets\command;C:\Android;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files\MySQL\MySQL Utilities 1.6\;C:\Program Files\Git\cmd;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\WINDOWS\system32\config\systemprofile\.dnx\bin;C:\Program Files\Microsoft DNX\Dnvm\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Users\arnoc\AppData\Local\Microsoft\WindowsApps;C:\cygwin\bin;C:\WINDOWS\System32;;. 
mrt 08, 2017 3:59:10 PM org.apache.coyote.AbstractProtocol init 
INFO: Initializing ProtocolHandler ["http-nio-8080"] 
mrt 08, 2017 3:59:10 PM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector 
INFO: Using a shared selector for servlet write/read 
mrt 08, 2017 3:59:10 PM org.apache.coyote.AbstractProtocol init 
INFO: Initializing ProtocolHandler ["ajp-nio-8009"] 
mrt 08, 2017 3:59:10 PM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector 
INFO: Using a shared selector for servlet write/read 
mrt 08, 2017 3:59:10 PM org.apache.catalina.startup.Catalina load 
INFO: Initialization processed in 1323 ms 
mrt 08, 2017 3:59:10 PM org.apache.catalina.core.StandardService startInternal 
INFO: Starting service Catalina 
mrt 08, 2017 3:59:10 PM org.apache.catalina.core.StandardEngine startInternal 
INFO: Starting Servlet Engine: Apache Tomcat/8.0.32 
mrt 08, 2017 3:59:10 PM 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].StandardContext[/messagingWebApp]] 
    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:916) 
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:871) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398) 
    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[/messagingWebApp]] 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153) 
    ... 6 more 
Caused by: java.lang.NoClassDefFoundError: javax/ws/rs/NotAuthorizedException 
    at java.lang.Class.getDeclaredFields0(Native Method) 
    at java.lang.Class.privateGetDeclaredFields(Class.java:2583) 
    at java.lang.Class.getDeclaredFields(Class.java:1916) 
    at org.apache.catalina.util.Introspection.getDeclaredFields(Introspection.java:106) 
    at org.apache.catalina.startup.WebAnnotationSet.loadFieldsAnnotation(WebAnnotationSet.java:256) 
    at org.apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSet.java:132) 
    at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:65) 
    at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:334) 
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:783) 
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:305) 
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:95) 
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5154) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) 
    ... 6 more 
Caused by: java.lang.ClassNotFoundException: javax.ws.rs.NotAuthorizedException 
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1308) 
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1142) 
    ... 20 more 

mrt 08, 2017 3:59:10 PM 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:916) 
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) 
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:441) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) 
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:769) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) 
    at org.apache.catalina.startup.Catalina.start(Catalina.java:629) 
    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:351) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:485) 
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]] 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398) 
    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:924) 
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:871) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) 
    ... 6 more 

mrt 08, 2017 3:59:10 PM 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:153) 
    at org.apache.catalina.startup.Catalina.start(Catalina.java:629) 
    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:351) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:485) 
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardService[Catalina]] 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153) 
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:769) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) 
    ... 7 more 
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina]] 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153) 
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:441) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) 
    ... 9 more 
Caused by: org.apache.catalina.LifecycleException: A child container failed during start 
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:924) 
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) 
    ... 11 more 

mrt 08, 2017 3:59:10 PM org.apache.coyote.AbstractProtocol pause 
INFO: Pausing ProtocolHandler ["http-nio-8080"] 
mrt 08, 2017 3:59:10 PM org.apache.coyote.AbstractProtocol pause 
INFO: Pausing ProtocolHandler ["ajp-nio-8009"] 
mrt 08, 2017 3:59:10 PM org.apache.catalina.core.StandardService stopInternal 
INFO: Stopping service Catalina 
mrt 08, 2017 3:59:10 PM org.apache.coyote.AbstractProtocol destroy 
INFO: Destroying ProtocolHandler ["http-nio-8080"] 
mrt 08, 2017 3:59:10 PM org.apache.coyote.AbstractProtocol destroy 
SEVERE: Failed to destroy end point associated with ProtocolHandler ["http-nio-8080"] 
java.lang.NullPointerException 
    at org.apache.tomcat.util.net.NioEndpoint.releaseCaches(NioEndpoint.java:305) 
    at org.apache.tomcat.util.net.NioEndpoint.unbind(NioEndpoint.java:481) 
    at org.apache.tomcat.util.net.AbstractEndpoint.destroy(AbstractEndpoint.java:823) 
    at org.apache.coyote.AbstractProtocol.destroy(AbstractProtocol.java:533) 
    at org.apache.catalina.connector.Connector.destroyInternal(Connector.java:1023) 
    at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:297) 
    at org.apache.catalina.core.StandardService.destroyInternal(StandardService.java:589) 
    at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:297) 
    at org.apache.catalina.core.StandardServer.destroyInternal(StandardServer.java:859) 
    at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:297) 
    at org.apache.catalina.startup.Catalina.start(Catalina.java:633) 
    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:351) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:485) 

mrt 08, 2017 3:59:10 PM org.apache.coyote.AbstractProtocol destroy 
INFO: Destroying ProtocolHandler ["ajp-nio-8009"] 
mrt 08, 2017 3:59:10 PM org.apache.coyote.AbstractProtocol destroy 
SEVERE: Failed to destroy end point associated with ProtocolHandler ["ajp-nio-8009"] 
java.lang.NullPointerException 
    at org.apache.tomcat.util.net.NioEndpoint.releaseCaches(NioEndpoint.java:305) 
    at org.apache.tomcat.util.net.NioEndpoint.unbind(NioEndpoint.java:481) 
    at org.apache.tomcat.util.net.AbstractEndpoint.destroy(AbstractEndpoint.java:823) 
    at org.apache.coyote.AbstractProtocol.destroy(AbstractProtocol.java:533) 
    at org.apache.catalina.connector.Connector.destroyInternal(Connector.java:1023) 
    at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:297) 
    at org.apache.catalina.core.StandardService.destroyInternal(StandardService.java:589) 
    at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:297) 
    at org.apache.catalina.core.StandardServer.destroyInternal(StandardServer.java:859) 
    at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:297) 
    at org.apache.catalina.startup.Catalina.start(Catalina.java:633) 
    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:351) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:485) 

當我註釋掉@WebServlet標註在服務器啓動沒有問題

編輯

這是我的web.xml:

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 
    <welcome-file-list> 
    <welcome-file>index.jsp</welcome-file> 
    </welcome-file-list> 

</web-app> 

這些都是我的行家依賴關係:

<dependencies> 
    <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>jstl</artifactId> 
      <version>1.2</version> 
     </dependency> 
    <dependency> 
      <groupId>javax</groupId> 
      <artifactId>javaee-web-api</artifactId> 
      <version>7.0</version> 
    </dependency> 



</dependencies> 
+0

你的web.xml是什麼樣的? – stdunbar

回答

0

來自堆棧跟蹤。

java.lang.NoClassDefFoundError: javax/ws/rs/NotAuthorizedException 

我會解決這個問題NoClassDefFoundError第一

看起來像你錯過了類路徑中的庫JAX-RS。通過Maven添加它作爲依賴項。

之後,您可以移動到下一個問題,如果有的話。

+0

感謝您的幫助,現在解決了這個問題! –

+0

Upvote&接受答案是堆棧溢出說謝謝的方式:-) –