Джерси 2.25 и Tomcat 9.0.33 всегда отвечают 404 Не найдено - PullRequest
1 голос
/ 07 апреля 2020

Я искал так много дней, и я не могу найти решение или где проблема, поэтому, пожалуйста, не отмечайте вопрос как повторяющийся, потому что это действительно не так. Я прочитал все вопросы и ответы, я попробовал все решения и все еще не работает.

Я использую Intellij, Jersey 2.25 и Tomcat 9.0.33. Мне не разрешено использовать maven, поэтому я загружаю все зависимости jar вручную, а затем ссылаюсь на них из окна структуры проекта, добавляя их в библиотеки и артефакты. Сервер успешно развернут, и когда я открываю http://localhost: 8080 / ofar_war_exploded / , он показывает содержимое файла индекса. jsp. Однако, когда я пытаюсь получить доступ к ресурсу, например, простому методу, который возвращает строку в моем классе OptimizerResource, я получаю следующий ответ

HTTP Status 404 - Not Found Тип Отчет о состоянии Описание Исходный сервер сделал не находит текущее представление для целевого ресурса или не желает раскрывать, что он существует. Apache Tomcat / 9.0.33

Папка lib содержит все необходимые зависимости. Я попытался добавить также папку lib внутри WEB-INF, я получил то же самое поведение. Это список всех банок, которые я использую

Это содержимое веб-файла. xml file.

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <display-name>Optimizer Service</display-name>
    <servlet>
        <servlet-name>optimizer</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>jersey.config.server.provider.packages</param-name>
            <param-value>rest.resources</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>optimizer</servlet-name>
        <url-pattern>/rest/*</url-pattern>
    </servlet-mapping>

</web-app>

Только для проверки Я добавил только один метод get в классе OptimizerResource, который возвращает привет. Когда я пытаюсь запросить этот URL http://localhost: 8080 / ofar_war_exploded / rest / optimizer / hello , я получаю 404 не найден.


@Path("optimizer")
public class OptimizerResource {
  @GET
    @Path("hello")
    @Produces("text/plain")
    public String getHello() {
        return "Hello";
    }
}

1 Ответ

1 голос
/ 09 апреля 2020

Были ошибки в зависимостях, они были неверными. Рабочий набор зависимостей следующий. Список зависимостей

Список всех пакетов джерси с полными зависимостями Ссылка

Или вы можете скачать Джерси загрузить полный пакет зависимостей из этого Link

...