Tomcat org.apache.catalina.loader.WebappClassLoaderBase.loadClass中的java.lang.NullPointerException

Tomcat org.apache.catalina.loader.WebappClassLoaderBase.loadClass中的java.lang.NullPointerException,tomcat,servlets,nullpointerexception,jax-rs,Tomcat,Servlets,Nullpointerexception,Jax Rs,这是什么原因?这似乎是一个非常常见的错误,原因很多 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.Conc

这是什么原因?这似乎是一个非常常见的错误,原因很多

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。”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>

HelloWorldTomcatService
com.package.from.java.file
你好
HelloWorldTomcatService
30
index.jsp
这个特定的错误可能是由
web.xml
条目引起的,该条目需要
,但实际上它不存在或为空

实际上,您的
条目缺少
。它应该引用您希望在下面的
指定的名称下注册的servlet类的FQN

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

someServlet
com.example.SomeServlet

也就是说,如果您的
实际上是您试图注册的JAX-RSservlet,那么它看起来也不好。关于学习JAX-RS并将其集成到Tomcat中,您确定阅读了正确的教程/资源吗?一个众所周知的例子是由提供的。

在我看来,从第一眼看,这似乎是servlet或webapp配置中的错误,但如果不知道更多,很难说。查看
catalina.out
日志文件并发布完整堆栈跟踪,您的webapp的
web.xml
文件也会有帮助。我认为您需要提供:注意,Apache Tomcat/8.5.3日志中提供了根本原因的完整堆栈跟踪。@Romainhipeau我在任何日志文件中都找不到更详细的堆栈跟踪。也许有一些设置可以启用它,但我最终还是设法在没有它的情况下混过去了。实际上,我已经用了一段时间那个教程了。最终,我放弃了它,并且能够像你说的那样糊里糊涂地完成一些事情。
<servlet>
    <servlet-name>someServlet</servlet-name>
    <servlet-class>com.example.SomeServlet</servlet-class>
</servlet>