![](/img/trans.png)
[英]Spring Jersey: java.lang.NoSuchMethodError: org.glassfish.jersey.server.ServerProperties.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
方法都添加了旧版地图的另一个参数
无论openStackService
是什么,这都是您面临的问题。 该组件正在尝试使用Jersey 2.8之前的版本,或更确切地说,使用PropertiesHelper
类。 如果openStackService
是第三方类,那么除了使用较旧的Jersey版本之外,您实际上无能为力,或者打开一些问题:-)
可能的根本原因:
<dependency>
<groupId>org.glassfish.jersey.connectors</groupId>
<artifactId>jersey-apache-connector</artifactId>
<version>${jersey.version}</version>
</dependency>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.