RESTful API - постоянное получение ошибки HTTP 500

Я делаю простой RESTful API для своего приложения. Я сделал еще один пакет в своем проекте (другой из того, где находится мой основной Java-класс, сервлет и модель). А затем я сделал свой файл ресурсов очень простым, который выглядит так:

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. Я использую среду IDE Netbeans и сервер Tomcat. Я загрузил Jersey 2.25 все файлы jar в папку WEB-INF / lib. Я экспериментирую с web.xml, чтобы исправить это, но у меня больше нет идей. Вот структура моего проекта:

введите описание изображения здесь

Вот и мое сообщение об ошибке:

Статус HTTP 500 - Servlet.init () для сервлета, веб-приложение Джерси, выдало исключение

тип Отчет об исключениях

сообщение Servlet.init () для сервлета Jersey Web Application выдало исключение

описание Сервер обнаружил внутреннюю ошибку, которая помешала ему выполнить этот запрос.

исключение

javax.servlet.ServletException: Servlet.init () для сервлета Веб-приложение Джерси сгенерировало исключение org.apache.catalina.authenticator.AuthenticatorBase.invoke (AuthenticatorBase.java:502) org.apache.catalina.valves.ErrorReportValve ErrorReportValve. java: 79) org.apache.catalina.valves.AbstractAccessLogValve.invoke (AbstractAccessLogValve.java:616) org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:518) org.apache.coyote11. процесс (AbstractHttp11Processor.java:1091) org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process (AbstractProtocol.java:673) org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun (NioEndpoint.java .:1500) apache.tomcat.util.net.NioEndpoint $ SocketProcessor.run (NioEndpoint.java:1456) java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1149) $ WorkPoolExecutor.java:1149) java.util.concurrent.ThreadPool ( java: 624) org.apache.tom cat.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

Возможно, у вас проблемы с вашими библиотеками.


person Luke_Nuke    schedule 21.08.2018    source источник
comment
Я изучил Maven и изменил свой проект на maven. Это действительно намного проще :) и, конечно же, этой ошибки больше нет.   -  person Paul Samsotha    schedule 25.08.2018
comment
Я добавил сообщение об ошибке. Я ищу журналы Каталины, но не могу найти. Только журналы, которые у меня есть в папке Tomcat, старше :( Я буду искать дальше, если найду что-нибудь плохое, опубликуйте это здесь.   -  person Luke_Nuke    schedule 27.08.2018


Ответы (2)


по инициализации сервера показывает, что вы забыли добавить какую-то библиотеку (возможно, ее нет в вашем Jersey 2.25, проверьте ее). Вы также можете попробовать использовать другую версию Джерси.

root cause

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

Вам нужно посмотреть (и опубликовать) свои журналы Tomcat. Посмотрите на

root cause

java.lang.NoSuchMethodError: org.glassfish.jersey.CommonProperties.getValue(..
. Мне кажется, что у вашего web.xml нет закрывающего тега веб-приложения, но это может быть просто потому, что вы не опубликовали полный web.xml.

person Oli    schedule 23.08.2018

Кроме того, вам необходимо упаковать ваше приложение в виде файла WAR. Tomcat ожидает, что WAR-файл вашего веб-приложения будет расположен в каталоге webapps.

редактировать:

метод не найден, поэтому соответствующий JAR-файл на самом деле отсутствует в пути к классам (папка lib).

Научитесь использовать Maven. Выучить основы не займет много времени, и это сделает вашу жизнь намного проще.

org.glassfish.jersey.CommonProperties.getValue
person KyleM    schedule 21.08.2018
comment
Я следую инструкциям из ошибки 500: Полная трассировка стека основной причины доступна в журналах Apache Tomcat / 8.0.27. Apache Tomcat / 8.0.27, но папка пуста; ( - person Luke_Nuke; 23.08.2018
comment
@Luke_Nuke см. Править. вам не хватает JAR для Джерси. - person Luke_Nuke; 23.08.2018
comment
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 / Объект; org.glassfish.jersey.jackson.JacksonFeature.configure (JacksonFeature.java:69) org.glassfish.jersey.model.internal.CommonConfig.configureFeatures (CommonConfig.java:674) org.glassfish.jersey.Config.internal. configureMetaProviders (CommonConfig.java:610) org.glassfish.jersey.server.ResourceConfig.configureMetaProviders (ResourceConfig.java:800) org.glassfish.jersey.server.ApplicationHandler.initialize (ApplicationHandlerfish ).java:3 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 (orjava.50Base). catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:79) org.apache.catalina.valves.AbstractAccessLogValve.invoke (AbstractAccessLogValve.java:616) org.apache.catapache.catalina.connector.service18.jote.jote: org.apache.coyote.http11.AbstractHttp11Processor.process (AbstractHttp11Processor.java:1091) org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process (AbstractProtocol.java:673) org.apache. doRun (NioEndpoint.java:1500) org.apache.to mcat.util.net.NioEndpoint $ SocketProcessor.run (NioEndpoint.java:1456) java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1149) java.util.concurrent.ThreadPool.javaExecutor: $ (WorkPool.javaExecutor: 624) org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run (TaskThread.java:61) java.lang. Thread.run (Thread.java:748) - person KyleM; 24.08.2018