2016-07-22 17 views
1

Was verursacht das? Dies scheint ein sehr komischer Fehler mit unzähligen Ursachen zu sein.java.lang.NullPointerException von org.apache.catalina.loader.WebappClassLoaderBase.loadClass

HTTP Status 500 - 

type Exception report 

message 

description The server encountered an internal error that prevented it from fulfilling this request. 

exception 

java.lang.NullPointerException 
    java.util.concurrent.ConcurrentHashMap.putVal(Unknown Source) 
    java.util.concurrent.ConcurrentHashMap.putIfAbsent(Unknown Source) 
    java.lang.ClassLoader.getClassLoadingLock(Unknown Source) 
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1149) 
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1116) 
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:510) 
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620) 
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349) 
    org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:1110) 
    org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) 
    org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:785) 
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1425) 
    org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) 
    java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    java.lang.Thread.run(Unknown Source) 
note The full stack trace of the root cause is available in the Apache Tomcat/8.5.3 logs. 

Hier sind die beinhaltet:

import java.util.Set; 
import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 
import javax.ws.rs.core.Application; 

Hinzufügen web.xml Bitte beachten Sie: Ich mehrere Werte für die URL-Muster versucht haben, und all den URI zu tun scheint, auf dem ändern I Erhalte den Fehler. 'Hallo' ist der Klassenname in der Java-Quelle.

<?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_3_0.xsd" version="3.0"> 

     <servlet> 
     <servlet-name>HelloWorldTomcatService</servlet-name> 
     <init-param> 
      <param-name>com.package.from.java.file</param-name> 
      <param-value>Hello</param-value> 
     </init-param> 
     </servlet> 
    <servlet-mapping> 
     <servlet-name>HelloWorldTomcatService</servlet-name> 
     <url-pattern></url-pattern> 
    </servlet-mapping> 
    <session-config> 
     <session-timeout>30</session-timeout> 
    </session-config> 
    <welcome-file-list> 
     <welcome-file>index.jsp</welcome-file> 
    </welcome-file-list> 
</web-app> 
+0

Vom ersten Moment an scheint es mir wie ein Fehler in der Servlet- oder Webapp-Konfiguration, aber es ist schwer zu sagen, ohne mehr zu wissen. Schauen Sie in die 'catalina.out'-Protokolldatei und veröffentlichen Sie den vollständigen Stack-Trace, und die' web.xml'-Datei Ihrer Webanwendung wäre ebenfalls hilfreich. –

+0

Ich denke, Sie müssen liefern: Hinweis Die vollständige Stack-Ablaufverfolgung der Ursache ist in den Apache Tomcat/8.5.3-Protokollen verfügbar. –

+0

@RomainHippeau Ich konnte in den Protokolldateien keinen detaillierteren Stacktrace finden. Vielleicht gibt es eine Einstellung, um es zu aktivieren, aber ich schaffte es, ohne es schließlich durchzuwursteln. – user1958756

Antwort

1
java.lang.NullPointerException 
    java.util.concurrent.ConcurrentHashMap.putVal(Unknown Source) 
    java.util.concurrent.ConcurrentHashMap.putIfAbsent(Unknown Source) 
    java.lang.ClassLoader.getClassLoadingLock(Unknown Source) 
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1149) 

Dieses spezifisch man kann durch einen Eintrag web.xml verursacht werden, die ein <xxx-class> wie <servlet-class>, <filter-class> oder <listener-class>, aber es ist eigentlich nicht vorhanden oder leer erwartet.

Und in der Tat, Ihre <servlet> Eintrag fehlt die <servlet-class>. Es sollte die FQN der Servlet-Klasse verweisen, die Sie unter dem Namen registrieren möchten, wie von <servlet-name> wie unten angegeben.

<servlet> 
    <servlet-name>someServlet</servlet-name> 
    <servlet-class>com.example.SomeServlet</servlet-class> 
</servlet> 

Das heißt, Ihr <init-param><param-name> auch nicht gut aussehen, wenn sie tatsächlich die JAX-RS-Servlet ist versucht, dich zu registrieren. Sind Sie sicher, dass Sie die richtigen Tutorials/Ressourcen lesen, um JAX-RS zu lernen und es in Tomcat zu integrieren? Ein bekanntes wird von Lars Vogel zur Verfügung gestellt.

+0

Ich habe dieses Tutorial tatsächlich eine Weile benutzt. Irgendwann habe ich es aufgegeben und war in der Lage, etwas zu tun, was du gesagt hast. – user1958756