NoSuchMethodError: org.eclipse.jetty.util.MultiMap.add
Я загрузил свой проект Spring/Maven в Eclipse (вариант Spring Tools Suite), установил Run Jetty Run и щелкнул Run 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)
ВОПРОС: Как я могу это исправить?
2 ответа
Как пояснил Йоаким, 9.0.0.M3 - это старая версия Jetty.
К счастью, Run Jetty Run была обновлена несколько недель назад.
Вот как использовать последнюю версию Run Jetty Run:
- Удалите из Eclipse любую существующую версию Run Jetty Run
- Добавьте это обновление сайта: http://xzer.github.io/run-jetty-run-updatesite/nightly/
- Установите с него необходимый компонент и дополнительный компонент 9.3.6.
- Теперь у вас есть Run Jetty Run с использованием Jetty 9.3.6, которому уже исполнился год, но она не вызывает вышеуказанную ошибку. Не забудьте выбрать его в
Run configurations
,
Вы используете нестабильную версию 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 (видно из вашего вывода)