Исключение в REST Jersey

Я пытаюсь запустить приложение, но используя Tomcat 7 и у меня есть такое исключение.

Я думаю, что это может быть что-то с Maven dependency , но я уверен. Если кто-то знает, что происходит, пожалуйста, ответьте 🙂

Исключение:

 message Servlet execution threw an exception description The server encountered an internal error that prevented it from fulfilling this request. exception javax.servlet.ServletException: Servlet execution threw an exception org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) root cause java.lang.AbstractMethodError: javax.ws.rs.core.UriBuilder.uri(Ljava/lang/String;)Ljavax/ws/rs/core/UriBuilder; javax.ws.rs.core.UriBuilder.fromUri(UriBuilder.java:119) com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:651) javax.servlet.http.HttpServlet.service(HttpServlet.java:728) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) note The full stack trace of the root cause is available in the Apache Tomcat/7.0.50 logs. 

Maven POM :

  1.0 4.0.0.RELEASE 3.2.0.RELEASE 1.18.1    climbing-portal-facade climbing-portal-facade ${application.version}   com.sun.jersey jersey-core ${jersey.version}   com.sun.jersey jersey-server ${jersey.version}   com.sun.jersey jersey-json ${jersey.version}   org.glassfish.jersey.test-framework.providers jersey-test-framework-provider-jdk-http 2.7    com.sun.jersey.contribs jersey-spring ${jersey.version}   org.springframework spring   org.springframework spring-core   org.springframework spring-web   org.springframework spring-beans   org.springframework spring-context   org.springframework spring-aop     org.springframework spring-web ${spring.version}   

Есть идеи ?

7 Solutions collect form web for “Исключение в REST Jersey”

Вы используете и Jersey 1 & 2 (Джерси 1 – явная зависимость, Джерси 2 – транзитивная зависимость от jersey-test-framework-provider-jdk-http ), и это невозможно – поэтому classloader собирает неправильный URIBuilder class.

Jersey зависимости в group com.sun.jersey все Jersey version 1 . Jersey version 2 использует группу org.glassfish.jersey .

У вас есть оба в ваших зависимостях Maven которые вызывают эту проблему.

Если возможно, используйте только Jersey 2 .

Это также может быть вызвано включением обоих

  com.sun.jersey jersey-server 1.xxx  

А также

  javax.ws.rs javax.ws.rs-api 2.xx  

Артефакты com.sun.jersey include версию (1.0) пространства имен javax.ws.rs, поэтому это единственное, что, вероятно, необходимо. rs-api также включает версию JAX-RS (2.0) в том же пространстве имен, поэтому, когда у вас есть два вместе, но они разные версии, это может вызвать конфликт, который вы видите.

Это может быть вызвано наличием «любого» конфликта, который обеспечивает как JAX-RS 1.0, так и JAX-RS 2.0. JAX-RS 1.0 часто предоставляется артефактами com.sun.jersey:jersey* (в частности, джерси-сердечник), а JAX-RS 2.0 предоставляется любым артефактом org.glassfish.jersey.core:jersey* или javax.ws.rs:javax.ws.rs-api артефакт или, возможно, артефакт javax:javaee-api или артефакт jsr311-api-1.0 .

Проблема в том, что, поскольку они являются разными именами групп + артефактов, maven по умолчанию будет неосознанно включать в ваш дистрибутив как версии 1.0, так и версии 2.0.

Дальнейшее усложнение проблемы состоит в том, что, поскольку в пути к classам имеется несколько конфликтующих баночек, «иногда» это может сработать, а затем «иногда» это может не быть (следовательно, некоторые сообщения «он работал с tomcat7, но не с tomcat8» и т. Д.),

Дальнейшее усложнение проблемы состоит в том, что, если у вас есть хотя бы одна зависимость, которая транзитно зависит от любого из вышеперечисленных, то maven будет приводить обе версии, и вы будете закрыты. Вы можете найти, что происходит mvn dependency:tree

Поэтому вам нужно либо перейти на «все 1.0», либо «all 2.0». В нашем случае мы пошли со всеми 1.0, добавив некоторые транзитивные исключения зависимостей в наш pom. Если вы хотите пойти на все 2.0, см. Здесь .

Я решаю эту проблему: я удаляю библиотеку JAX-RS 2.0, добавляю библиотеки jersey-server-1.8.jar, jersey-core-1.8.jar, jersey-servlet-1.12.jar и asm-3.3.1.jar

В моем случае оба приложения jsr311-api-0.10.jar и javax.ws.rs-api-2.0.jar были в приложении lib. Я удалил jsr311 jar и проблема была решена

У меня был точный вопрос, который не мог найти проблему. В первый раз Tomcat поднялся, и все сработало, но после перезагрузки сервера у меня было исключение.

Решение состояло в том, чтобы понизить tomcat до 7.0.26. Однако этот трюк не знал, почему.

Я этого не понимал, но в папке WEB-INF / lib на сервере был файл с именем javax.ws-rs-api-2.0.jar . Он был добавлен еще два года назад кем-то другим. Это вызвало конфликт с набором файлов jersey, которые я скопировал в папку WEB-INF / lib . Я скопировал / переименовал файл, перезапустил службу для своего контейнера (то есть Tomcat), и он сработал.

Нам нужно внести следующие изменения:

web.xml

   RESTful Jersey Web Service Sample org.glassfish.jersey.servlet.ServletContainer  jersey.config.server.provider.packages com.subu.jersey.rest   

pom.xml

   org.glassfish.jersey.core jersey-server 2.17   org.glassfish.jersey.containers jersey-container-servlet-core 2.17  
  • Писатель тела сообщения для типа Java, class myPackage.B и тип носителя MIME, приложение / октет-stream не были найдены
  • Операции без CRUD в службе RESTful
  • Как выполнить POST-сырое целое JSON в теле запроса на доработку?
  • В чем преимущество использования REST вместо не-REST HTTP?
  • Как включить CORS в ASP.net Core WebAPI
  • Выбор между HttpClient и WebClient
  • HTTP POST с параметрами запроса URL - хорошая идея или нет?
  • Передача сложных объектов в службу restа WCF
  • Как управлять версиями REST API с весной?
  • Отключить язык приложений гипертекста (HAL) в JSON?
  • Spring @ExceptionHandler не работает с @ResponseBody
  • Interesting Posts

    Загрузка / кеширование Карт Google для автономного использования

    Геолокация веб-сайтов android

    Windows запрашивает у меня код сопряжения Bluetooth для моей гарнитуры

    Есть ли преимущества перехода по указателю на передачу по ссылке в C ++?

    Как поворачивать изображения автоматически, исходя из данных exif

    Что делает размещение @ перед именем переменной C #?

    Excel (2010) HYPERLINK: как вызвать файл с аргументами командной строки и пробелами в пути?

    Как выполнить долговременную задачу в ASP.NET 4?

    Увеличьте количество посещенных страниц в Google Chrome?

    Как запустить все тесты, принадлежащие определенной категории в JUnit 4

    WPF VirtualizingStackPanel для повышения производительности

    эквивалент pdist2 в версии 7 MATLAB

    Разделить вектор по его последовательностям

    Android LocationManager.getLastKnownLocation () возвращает null

    Как заполнить фоновое изображение UIView

    Давайте будем гением компьютера.