NoSuchMethodError при запуске в приложении Java Jersey

У меня возникла очень странная ошибка при попытке запустить приложение «Джерси» на Tomcat. Тот же код работает на других компьютерах. Я попытался переустановить tomcat, все мои зависимости maven, даже Eclipse и Java, не повезло. Кажется, что плохая версия Джерси загружается, я думаю?

Любые указатели в правильном направлении будут оценены.

Вот эффективный pom: http://pastebin.com/NacsWTjz

И фактический pom: http://pastebin.com/H6sHe4ce

2015-02-13 13:43:40,870 [localhost-startStop-1] ERROR org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/middleware-server] - StandardWrapper.Throwable java.lang.NoSuchMethodError: javax.ws.rs.core.Application.getProperties()Ljava/util/Map; at org.glassfish.jersey.server.ApplicationHandler.(ApplicationHandler.java:304) at org.glassfish.jersey.server.ApplicationHandler.(ApplicationHandler.java:285) at org.glassfish.jersey.servlet.WebComponent.(WebComponent.java:311) at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:170) at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:358) at javax.servlet.GenericServlet.init(GenericServlet.java:158) at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1231) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1144) at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1031) at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4901) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5188) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1399) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) 

Примечание. Пожалуйста, см. Выше комментарии для дальнейшего обсуждения и советов.

Эта обычная ошибка означает, что у вас есть как JAX-RS 1, так и JAX-RS 2 на пути к classам. Джерси 2 использует JAX-RS 2 ( javax.ws.rs-api-2.0.1.jar ), но если у вас также есть jsr311-api.jar , то есть JAX-RS 1, есть javax.ws.rs.core.Application в каждой банке. Но приложение jsr311-api не имеет метода getProperties() (следовательно, NoSuchMethodError ).

Я пришел к выводу, что все, что вам нужно сделать, это добавить исключение выше в зависимость от чванства. Поставщик Jackson 2.0 (который зависит от JAX-RS 1), по-видимому, переопределяется поставщиком 2.4.1 (который использует новую версию). Поэтому нам не нужно добавлять его сами. Когда он переопределен, он, кажется, оставляет jsr311-api.jar . Поэтому, если мы исключаем его, никто не может попытаться использовать его, что выглядит текущей проблемой

  com.wordnik swagger-core_2.10 1.3.11   javax.ws.rs jsr311-api    

Мы используем jersey-json 1.9, который имеет зависимость от jersey-core который также имеет class javax.ws.rs.core.Application .

Поэтому наше исправление заключается в исключении джерси-ядра из jersey-json :

   com.sun.jersey jersey-json 1.9   com.sun.jersey jersey-core    

Вы можете изменить версию tomcat на 7, тогда вам не придется менять pom.xml

  • java.lang.NoClassDefFoundError: org / apache / spark / streaming / twitter / TwitterUtils $ во время работы TwitterPopularTags
  • Чтение файла свойств из файла POM в Maven
  • SLF4J NoSuchMethodError на LocationAwareLogger
  • mvn release: подготовить не совершать изменений в pom.xml
  • Исключение в streamе «main» java.lang.NoClassDefFoundError: org / openqa / selenium / WebDriver
  • Eclipse / Maven: тесты JUnit не скомпилированы при их запуске
  • Отключить центральный repository Maven
  • Как вы можете найти последнюю версию артефакта maven из Java с использованием эфира?
  • запустить основной class проекта Maven
  • Maven - всегда загружайте источники и javadocs
  • Лучшая практика Maven для создания искусственного артефакта zip
  • Давайте будем гением компьютера.