2016-07-22 5 views
1

이 문제의 원인은 무엇입니까? 이것은 무수한 원인들과 함께 아주 흔한 오류 인 것처럼 보입니다. 여기 org.apache.catalina.loader.WebappClassLoaderBase.loadClass의 java.lang.NullPointerException

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. 

이 포함됩니다 :

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; 

web.xml을 주의 사항 추가 : 나는 URL 패턴에 대해 여러 값을 시도하고 할 것 같다 모두가 URI를 변경되는 I 오류가 발생했습니다. 'Hello'는 java 소스의 클래스 이름입니다.

<?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

처음부터 서블릿이나 webapp 구성에 오류가있는 것처럼 보이지만 더 많이 알지 못하면 말하기가 어렵습니다. 'catalina.out' 로그 파일을보고 전체 스택 추적을 게시하면 webapp의'web.xml' 파일도 도움이됩니다. –

+0

다음과 같이 제공해야한다고 생각합니다. note 근본 원인의 전체 스택 추적은 Apache Tomcat/8.5.3 로그에서 사용할 수 있습니다. –

+0

@RomainHippeau 모든 로그 파일에서 스택 스택을 자세히 찾을 수 없습니다. 아마도 그것을 가능하게하는 몇 가지 설정이 있었지만, 결국 그것을 없애고 관리 할 수있었습니다. – user1958756

답변

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) 

이 특정 하나 는이 같은 <servlet-class>, <filter-class> 또는 <listener-class>로하지만, 실제로 없거나 비어 <xxx-class> 예상하는 web.xml 항목에 의해 발생할 수 있습니다.

그리고 실제로 <servlet> 항목에 <servlet-class> 항목이 누락되었습니다. 아래와 같이 <servlet-name>으로 지정된 이름으로 등록하려는 서블릿 클래스의 FQN을 참조해야합니다. 말했다

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

, 실제로 등록을 시도 JAX-RS 서블릿 인 경우 <init-param><param-name>도 좋아 보이지 않습니다. JAX-RS를 배우고 Tomcat에 통합하는 데 필요한 튜토리얼/리소스를 읽고 있습니까? 잘 알려진 것은 Lars Vogel입니다.

+0

사실 나는 잠시 동안 그 튜토리얼을 사용하고있었습니다. 결국 나는 그것을 포기하고 당신이 말한 것과 같은 것을하면서 혼란스러워 할 수있었습니다. – user1958756

관련 문제