NoSuchMethodError:org.eclipse.jetty.util.MultiMap.add

时间:2016-09-30 08:32:57

标签: eclipse jetty spring-tool-suite runjettyrun

我在Eclipse中加载了我的Spring / Maven项目(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)

问题:我该如何解决?

2 个答案:

答案 0 :(得分:0)

您正在运行Jetty的不稳定版本。

版本9.0.0.M3不是一个稳定的版本(这是一个实验里程碑版本,一个发布的候选版本,可帮助集成商开始为最终版本发展其代码)。

使用稳定版本,例如9.3.12.v20160915,您将获得更好的体验。

9.3.12.v20160915 jetty-util-9.3.12.v20160915.jar

中可以找到MultiMap课程

另请注意,Jetty 9是servlet 3.1,而不是3.0.1(在输出中看到)

答案 1 :(得分:0)

正如Joakim所解释的,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
  • 你现在使用Jetty 9.3.6运行Jetty Run,已经有一年了,但是没有触发上面的错误。请务必在Run configurations
  • 中选择它