【问题标题】:java.lang.NoSuchMethodError: org.glassfish.hk2.api.ServiceLocatorFactory.createjava.lang.NoSuchMethodError: org.glassfish.hk2.api.ServiceLocatorFactory.create
【发布时间】:2018-01-22 16:05:10
【问题描述】:

错误:

java.lang.NoSuchMethodError: org.glassfish.hk2.api.ServiceLocatorFactory.create(Ljava/lang/String;Lorg/glassfish/hk2/api/ServiceLocator;Lorg/glassfish/hk2/extension/ServiceLocatorGenerator;Lorg/glassfish/hk2/api/ServiceLocatorFactory$CreatePolicy;)Lorg/glassfish/hk2/api/ServiceLocator;
    org.glassfish.jersey.internal.inject.Injections._createLocator(Injections.java:138)

pom.xml

<dependency>
  <groupId>org.glassfish.jersey.containers</groupId>
  <artifactId>jersey-container-servlet</artifactId>
  <version>2.22.1</version>
</dependency>

web.xml

  <servlet>
    <servlet-name>jersey-serlvet</servlet-name>
    <servlet-class>
      org.glassfish.jersey.servlet.ServletContainer
    </servlet-class>
    <init-param>
      <param-name>jersey.config.server.provider.packages</param-name>
      <param-value>...</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>jersey-serlvet</servlet-name>
    <url-pattern>/prods/*</url-pattern>
  </servlet-mapping>

欢迎任何 cmets。谢谢

【问题讨论】:

  • NoSuchMethodError 很可能是由于涉及的库的版本冲突。因此调用 org.glassfish.hk2.api.ServiceLocatorFactory.create 的库与使用的 glassfish 版本不兼容。
  • 我在这里使用了一些类似的xml文件afsinka.wordpress.com/2015/12/27/…
  • @peeskillet 谢谢。我是泽西岛和雄猫的新手。请问org.glassfish.jersey.containers和tomcat是什么关系?当我运行mvn clean package 并将war 部署到tomcat 的webapps 折叠时,为什么我们需要org.glassfish.jersey.containers?
  • 你的 pom.xml 中有 &lt;artifactId&gt;hk2-api&lt;/artifactId&gt; 吗?

标签: java maven jersey-2.0 tomcat8


【解决方案1】:

您需要将 hk2-api 依赖项添加到您的 pom.xml 中,您可以在下面找到它: 并删除.m2目录清理并重建项目并更新项目并运行它。

<dependency>
    <groupId>org.glassfish.hk2</groupId>
    <artifactId>hk2-api</artifactId>
    <version>2.5.0-b42</version>
</dependency>

【讨论】:

    【解决方案2】:

    我最近遇到了一个类似的问题,并试图检查所有 jar 的依赖项:) 但是,对于 maven 项目有一个简单的解决方案。也许它可以解决你的问题。 添加这个maven插件;

    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-enforcer-plugin</artifactId>
    <version>3.0.0-M3</version>
    <configuration>
        <rules>
            <dependencyConvergence />
        </rules>
    </configuration>
    </plugin>
    

    运行这个;

    mvn 执行者:执行

    【讨论】:

      猜你喜欢
      • 2019-01-31
      • 1970-01-01
      • 1970-01-01
      • 2013-11-04
      • 1970-01-01
      • 2017-04-18
      • 2017-10-11
      • 2014-11-03
      相关资源
      最近更新 更多