繁体   English   中英

org.glassfish.jersey.core getValue()方法

[英]org.glassfish.jersey.core getValue() method

我正在使用以下依赖项。

<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 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版本之外,您实际上无能为力,或者打开一些问题:-)

我发现,我的应用程序使用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>

在此处输入图片说明

可能的根本原因:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM