Ошибка NoSuchMethodError: org.eclipse.jetty.util.MultiMap.add

#eclipse #jetty #spring-tool-suite #runjettyrun

#затмение #jetty #spring-набор инструментов #runjettyrun

Вопрос:

Я загрузил свой проект Spring / Maven в Eclipse (вариант Spring Tools Suite), установил Run Jetty Run и щелкнул Run Jetty .

ПРОБЛЕМА: Jetty запускается некорректно:

 OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
Running Jetty 9.0.0.M3
ParentLoaderPriority enabled
Enable config class:runjettyrun.webapp.RJRWebInfConfiguration
Enable config class:org.eclipse.jetty.webapp.WebXmlConfiguration
Enable config class:runjettyrun.webapp.RJRMetaInfoConfiguration
Enable config class:org.eclipse.jetty.webapp.FragmentConfiguration
Enable config class:runjettyrun.annotation.RJRAnnotationConfiguration
Enable config class:org.eclipse.jetty.webapp.JettyWebXmlConfiguration
Enable config class:org.eclipse.jetty.webapp.TagLibConfiguration
ProjectClassLoader: entry=/home/nico/src/nemaki/core/target/classes
ProjectClassLoader: entry=/home/nico/.m2/repository/javax/servlet/javax.servlet-api/3.0.1/javax.servlet-api-3.0.1.jar
[... many other JAR libraries, none being Jetty ...]
ProjectClassLoader: entry=/home/nico/.m2/repository/jp/aegif/nemakiware/nemakiware-common/2.3.10/nemakiware-common-2.3.10.jar
Excluded entry=/home/nico/src/nemaki/core/target/test-classes 
2016-09-30 17:17:09.780:INFO:oejs.Server:main: jetty-9.0.0.M3
2016-09-30 17:17:12.121:WARN:oejuc.AbstractLifeCycle:main: FAILED o.e.j.w.WebAppContext@694e1548{/core,[file:/home/nico/src/nemaki/core/WebContent/],STARTING}: java.lang.NoSuchMethodError: org.eclipse.jetty.util.MultiMap.add(Ljava/lang/Object;Ljava/lang/Object;)V
java.lang.NoSuchMethodError: org.eclipse.jetty.util.MultiMap.add(Ljava/lang/Object;Ljava/lang/Object;)V
    at org.eclipse.jetty.annotations.ClassInheritanceHandler.handle(ClassInheritanceHandler.java:56)
    at org.eclipse.jetty.annotations.AnnotationParser$MyClassVisitor.visit(AnnotationParser.java:398)
    at org.objectweb.asm.ClassReader.accept(Unknown Source)
  

ВОПРОС: Как я могу это исправить?

Ответ №1:

Вы используете нестабильную версию Jetty.

Версия не является стабильной версией (это экспериментальный релиз, кандидат на выпуск, который поможет интеграторам начать разрабатывать свой код для возможного выпуска). 9.0.0.M3

Используйте стабильную версию, например, 9.3.12.v20160915 и у вас будет гораздо лучший опыт.

В 9.3.12.v20160915 MultiMap классе можно найти в jetty-util-9.3.12.v20160915.jar

Также обратите внимание, что Jetty 9 — это сервлет 3.1, а не 3.0.1 (видно из вашего вывода)

Ответ №2:

Как объяснил Joakim, 9.0.0.M3 — это старая версия Jetty.

К счастью, запуск Jetty Run был обновлен несколько недель назад.
Вот как использовать последний запуск Jetty Run:

  • Удалите из Eclipse любую существующую версию Run Jetty Run
  • Добавьте этот сайт обновления: http://xzer.github.io/run-jetty-run-updatesite/nightly /
  • Установите из него требуемый компонент и дополнительный компонент 9.3.6
  • Теперь вы запустили Jetty Run с использованием Jetty 9.3.6, которому уже год, но он не вызывает указанную выше ошибку. Обязательно выберите его Run configurations .