java - RESTful API-始终出现HTTP 500错误

标签 java rest api jersey http-status-code-500

我正在为我的应用程序制作一个简单的RESTful API。我在项目中制作了另一个程序包(另一个是我的主要Java类,Servlet和模型所在的程序包)。然后,我制作了非常简单的资源文件,如下所示:

package com.java.api;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.core.Response;

@Path("webservice")
public class ZipcodeService {

    @GET
    @Path("/lookup")
    public Response lookup() {
        return Response.ok().entity("Los Angeles").build();
    }
}


这是我的web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" id="WebApp_ID"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
         http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
         xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

    <display-name>parking-space-booking-system</display-name>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
    <servlet>
        <servlet-name>Jersey Web Application</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>jersey.config.server.provider.packages</param-name>
            <param-value>com.java.api</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Jersey Web Application</servlet-name>
        <url-pattern>/webservice/*</url-pattern>
    </servlet-mapping>
</web-app>


我没有使用Maven。我正在使用Netbeans IDE和Tomcat服务器。我将Jersey 2.25的所有jar文件上传到WEB-INF / lib文件夹。我正在尝试使用web.xml进行修复,但是我没有更多的想法。这是我的项目的结构:

enter image description here

这也是我收到的错误消息:

HTTP状态500-Servlet Jersey Web应用程序的Servlet.init()抛出异常

类型例外报告

Servlet Jersey Web应用程序的消息Servlet.init()引发异常

描述服务器遇到内部错误,导致服务器无法满足此请求。

例外

javax.servlet.ServletException:Servlet Jersey Web应用程序的Servlet.init()抛出异常
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
    org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:673)
    org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun(NioEndpoint.java:1500)
    org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.run(NioEndpoint.java:1456)
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:624)
    org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61)
    java.lang.Thread.run(Thread.java:748)

根本原因

java.lang.NoSuchMethodError:org.glassfish.jersey.CommonProperties.getValue(Ljava / util / Map; Ljavax / ws / rs / RuntimeType; Ljava / lang / String; Ljava / lang / Object; Ljava / lang / Class;)Ljava / lang / Object;
    org.glassfish.jersey.jackson.JacksonFeature.configure(JacksonFeature.java:69)
    org.glassfish.jersey.model.internal.CommonConfig.configureFeatures(CommonConfig.java:674)
    org.glassfish.jersey.model.internal.CommonConfig.configureMetaProviders(CommonConfig.java:610)
    org.glassfish.jersey.server.ResourceConfig.configureMetaProviders(ResourceConfig.java:800)
    org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:367)
    org.glassfish.jersey.server.ApplicationHandler.access $ 500(ApplicationHandler.java:162)
    org.glassfish.jersey.server.ApplicationHandler $ 3.run(ApplicationHandler.java:304)
    org.glassfish.jersey.internal.Errors $ 2.call(Errors.java:289)
    org.glassfish.jersey.internal.Errors $ 2.call(Errors.java:286)
    org.glassfish.jersey.internal.Errors.process(Errors.java:315)
    org.glassfish.jersey.internal.Errors.process(Errors.java:297)
    org.glassfish.jersey.internal.Errors.processWithException(Errors.java:286)
    org.glassfish.jersey.server.ApplicationHandler。(ApplicationHandler.java:301)
    org.glassfish.jersey.servlet.WebComponent。(WebComponent.java:311)
    org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:169)
    org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:359)
    javax.servlet.GenericServlet.init(GenericServlet.java:158)
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
    org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:673)
    org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun(NioEndpoint.java:1500)
    org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.run(NioEndpoint.java:1456)
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:624)
    org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61)
    java.lang.Thread.run(Thread.java:748)

note注意在Apache Tomcat / 8.0.27日志中可以找到根本原因的完整堆栈跟踪。
Apache Tomcat / 8.0.27

最佳答案

也许您的库有问题。

root cause

java.lang.NoSuchMethodError: org.glassfish.jersey.CommonProperties.getValue(..


服务器初始化显示您忘记添加一些库(也许它不在您的Jersey 2.25中,请检查它)。您也可以尝试使用另一个版本的Jersey。

关于java - RESTful API-始终出现HTTP 500错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51956995/

相关文章:

JavaScript 和 Json : Excluding Fields From Serialization and Deserialization

java - 在 Spring Data Rest 中启用跨源请求

node.js - Node 中的 API 请求返回错误

javascript - 在 API 中使用变量

c - 共享库 : break the ABI compatibility without breaking API compatibility

java - 在tomcat上部署项目后,日志中出现Scala错误

java - 选择性使用 Spring Security 的 CSRF 过滤器

android - Android-App 与本地 Python-App 之间的通信

asp.net-mvc - ASP.NET MVC 4 Web Api 和 REST 经典服务的区别

api - 将 POST 数据作为原始数据接收是 RESTful 的吗?