【问题标题】:org.glassfish.jersey.core getValue() methodorg.glassfish.jersey.core getValue() 方法
【发布时间】:2016-01-06 14:27:18
【问题描述】:

我正在使用以下依赖项。

<dependency>
    <groupId>org.glassfish.jersey.core</groupId>
    <artifactId>jersey-common</artifactId>
    <version>2.22.1</version>
</dependency>

但出现以下错误

rg.springframework.beans.factory.BeanCreationException: Error creating bean with name 'openStackService': Invocation of init method failed; nested exception is java.lang.NoSuchMet
odError: org.glassfish.jersey.internal.util.PropertiesHelper.getValue(Ljava/util/Map;Ljavax/ws/rs/RuntimeType;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Obje
t;

哪个版本有这个方法

Ljava/util/Map;
Ljavax/ws/rs/RuntimeType;


Ljava/lang/String;
Ljava/lang/Object;
Ljava/lang/Class;)

Ljava/lang/Object;

【问题讨论】:

标签: java jersey jersey-2.0


【解决方案1】:

我在尝试创建与 Java 6 兼容的可重用组件时发现了同样的问题,即我必须使用 Jersey 2.6。 PropertiesHelper的用法如下。假设你想获得一些配置属性

public MyContructor(@Context Configuration config) {
    Map<String, Object> props = config.getProperties();
    boolean doSomething = 
        PropertiesHelper.getValue(
            props,
            RuntimeType.SERVER,
            Constants.SOME_PROP_KEY,
            defaultValue,
            Boolean.class
         );     
}

这带来的问题是,从 Jersey 2.8 开始,PropertiesHelper 类完全改变了,没有向后兼容性。因此,而不是以下,

getValue(Map<String,?> properties, javax.ws.rs.RuntimeType runtimeType, String key, T defaultValue, Class<T> type)

所有重载的属性助手 getValue 方法添加了旧地图的另一个参数

getValue(Map<String, ?> properties, RuntimeType runtimeType, String key, T defaultValue, Class<T> type, Map<String, String> legacyMap)

无论openStackService 是什么,这都是您面临的问题。该组件正在尝试使用 Jersey 的 2.8 之前版本,或者更准确地说,PropertiesHelper 类。如果openStackService 是第三方类,那么您实际上无能为力,除了使用较旧的 Jersey 版本,或者可能会打开一些问题 :-)

【讨论】:

    【解决方案2】:

    我发现,我的应用程序使用 jersey-media-moxy-2.5.1.jar 并在此 API 中调用旧版本的 getValue() 我添加了以下依赖项的新版本,因此它解决了问题。

    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-moxy</artifactId>
        <version>2.22.1</version>
    </dependency>
    

    【讨论】:

      【解决方案3】:

      可能的根本原因:

      <dependency>
          <groupId>org.glassfish.jersey.connectors</groupId>
          <artifactId>jersey-apache-connector</artifactId>
          <version>${jersey.version}</version>
      </dependency>
      
      • ${jersey.version} 与其他 jersey 依赖项不同

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-30
        • 1970-01-01
        • 1970-01-01
        • 2018-02-08
        • 2018-07-27
        • 1970-01-01
        • 1970-01-01
        • 2020-01-23
        相关资源
        最近更新 更多