Получение ошибки HTTP 500 для класса ServletContainer, не найденного в Rest API с помощью Postman - PullRequest
0 голосов
/ 11 октября 2018

Я новичок в использовании веб-сервисов Restful.Я пытаюсь запустить простой Restful API из Eclipse, используя Postman из примера Tutorialspoint UserManagement.

Я создал WAR-файл с использованием Eclipse и для развертывания war-файла в контейнере сервлета, основываясь на том, что я нашел по следующей ссылке инструкции по развертыванию war-файла в tomcat , выскопируйте, вставьте файл war в папку webapp в папке apache tomcat 8.0.49 и вставьте следующую ссылку в ваш веб-браузер или почтальон http://localhost:8080/RestAPI_UserManagement/rest/UserService/user.enter image description here

Но продолжайте получать ошибку

HTTP 500 в Postman,

    <body>
        <h1>HTTP Status 500 - Error instantiating servlet class org.glassfish.jersey.servlet.ServletContainer.class</h1>
        <div class="line"></div>
        <p>
            <b>type</b> Exception report
        </p>
        <p>
            <b>message</b>
            <u>Error instantiating servlet class org.glassfish.jersey.servlet.ServletContainer.class</u>
        </p>
        <p>
            <b>description</b>
            <u>The server encountered an internal error that prevented it from fulfilling this request.</u>
        </p>
        <p>
            <b>exception</b>
        </p>
        ...
        ...
        ...
    </body>

и в консоли Eclipse я получаю следующееошибка

SEVERE: Allocate exception for servlet Jersey Restful API
java.lang.ClassNotFoundException: org.glassfish.jersey.servlet.ServletContainer.class
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1335)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1163)
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:542)
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:523)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:150)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1091)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:817)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:135)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:94)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:502)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1132)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1539)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1495)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:748)

Я написал следующий код в папке моего проекта (класс POJO, Rest API и бизнес-логика для реализации Rest API).Вот бизнес-логин для реализации Rest API и web.xml.

UserServices.java

package com.RestAPI;

import java.util.List;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path("/Userservices")
public class UserServices {
    UserDao userDao = new UserDao();
    @GET
    @Path("User")
    @Produces(MediaType.APPLICATION_XML)
    public List<User> getUsers(){
        return userDao.getUserList();
    }
}

web.xml

<?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"  
   id = "WebApp_ID" version = "3.0">
   <display-name>User Management</display-name>
   <servlet>
    <servlet-name>Jersey Restful API</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer.class</servlet-class>
    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>com.RestAPI</param-value>
    </init-param>
   </servlet>
   <servlet-mapping>
    <servlet-name>Jersey Restful API</servlet-name>
    <url-pattern>/rest/*</url-pattern>
   </servlet-mapping>
</web-app>

Вот моя файловая структура длямой проект.Я загрузил все библиотеки Джерси в путь / Webcontent / WEB-INF / lib в моем проекте.enter image description here

Вот мой журнал catalina.out Tomcat.

/Volumes/Macintosh HD/Users/Roys_laptop/apache-tomcat-8.0.49/bin/catalina.sh: line 456: /usr/libexec/java_home:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk:/bin/java: No such file or directory

Исходя из этого мой журнал catalina.out Tomcat, он говорит, что есть некоторая переменнаяотсутствует.Но я не уверен, что это такое и как его установить.Некоторая помощь, пожалуйста ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...