【问题标题】:NoSuchMethod error sometimesNoSuchMethod 有时会出错
【发布时间】:2017-11-05 22:27:59
【问题描述】:

有时在我的应用程序在 tomcat 8 上部署后,我得到:

2017 06 05 10:34:47#+0300#ERROR#org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/]##anonymous#localhost-startStop-1#na###web##StandardWrapper.Throwablejava.lang.NoSuchMethodError: javax.ws.rs.core.Application.getProperties()Ljava/util/Map;
at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:331)
at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:390)
at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:172)
at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:364)
at javax.servlet.GenericServlet.init(GenericServlet.java:158)
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1183)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1099)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:989)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4931)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5241)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:752)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:952)
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1823)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
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:805)

我想有时它会得到不同的依赖,没有 .getProperties() 方法,但是我如何选择每次都使用哪一个

【问题讨论】:

    标签: java maven tomcat servlets web


    【解决方案1】:

    您的类路径或类路径中包含 JAX-RS 1(jsr311-api.jar) 和 JAX-RS 2(javax.ws.rs-api-2.0.1.jar) jar 的 JAX-RS jar 版本。如果在类路径中您有 jsr311-api.jar这是 JAX-RS 1.jsr311-api.jar 没有方法 getProperties() 因此你得到 NoSuchMethodError。在你的类路径中使用 javax.ws.rs-api-2.0.1.jar 它将解决你的问题。

    【讨论】:

    • 我怎样才能明确告诉它使用 javax.ws.rs-api-2.0.1.jar ?
    • 从你的 pom.xml 中排除 jsr311-api 的依赖,只保留与 JAX RS 2 相关的工件事实
    • org.glassfish.jerseyjersey-bom2.22.1pom importjavax.ws.rsjsr311-api 在我的主 pom 中我有这个但有时仍然会出现异常
    • 这是你完整的 pom.xml 吗?粘贴完整的 pom.xml 以及客户端 jersy 客户端 jar 怎么样?
    • 检查您的 lib 文件夹并验证它是否包含相同的重复 jor。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-02
    • 2021-01-07
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多