这是 对所有遇到NoSuchMethodError的人 的深入概述和解决方案 ,尤其是在球衣上下文中。
问题是
java.lang.NoSuchMethodError:javax.ws.rs.core.Application.getProperties()Ljava
/ util / Map;
在Java中,当JVM无法找到指定类中指定的方法时,将引发NoSuchMethodError。来自https://docs.oracle.com/javase/9/docs/api/java/lang/NoSuchMethodError.html
如果应用程序尝试调用类的指定方法(静态或实例),并且该类不再具有该方法的定义,则抛出该异常。
在您的情况下,JVM抱怨
javax.ws.rs.core.Application没有
getProperties()方法。
Jesey 2.x使用JEE 7 。在JEE 7版本中
javax.ws.rs.core.Application有
getClasses()
getSingeltons()
getProperties()
方法定义。https://docs.oracle.com/javaee/7/api/javax/ws/rs/core/Application.html
Jesey 1.x使用JEE 6 。在JEE 6版本中
javax.ws.rs.core.Application只有
getClasses()
getclass()
但是
getProperties()没有定义。https://jersey.github.io/apidocs/1.19.1/jersey/javax/ws/rs/core/Application.html
解
您在pom.xml中定义了jersey
2.x和1.x版本。因此
javax.ws.rs.core.Application,您的类路径中同时存在JEE6和7版本,并且classloader加载了尚未
getProperties()定义但您的应用程序
getProperties()仍然希望执行的appliction类的JEE
6版本。因此,错误。
从pom.xml中删除所有的jersey 1.x版本,并坚持使用jersey 2.x版本。类加载器将负责其余的工作。



