Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >KafkaException:未能实例化类JsonDeserializer

KafkaException:未能实例化类JsonDeserializer
EN

Stack Overflow用户
提问于 2017-02-23 15:11:21
回答 2查看 11K关注 0票数 4

我试着在this reference guide之后用Kafka客户端启动Spring Boot应用程序,我得到了下面的错误。

你能告诉我怎么修吗?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Bean
public Map<String, Object> consumerConfig() {
    final HashMap<String, Object> result = new HashMap<>();
    result.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, env.getProperty("spring.kafka.bootstrap.servers"));
    result.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, LongDeserializer.class);
    result.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, JsonDeserializer.class);
    return result;
}

@Bean
public ConsumerFactory<Long, String> consumerFactory() {
    return new DefaultKafkaConsumerFactory<>(consumerConfig());
}

@Bean
ConcurrentKafkaListenerContainerFactory<Long, String> kafkaListenerContainerFactory() {
    ConcurrentKafkaListenerContainerFactory<Long, String> containerFactory = new ConcurrentKafkaListenerContainerFactory<>();
    containerFactory.setConsumerFactory(consumerFactory());
    containerFactory.setConcurrency(3);
    containerFactory.getContainerProperties().setPollTimeout(3000);
    return containerFactory;
}

--

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
org.springframework.context.ApplicationContextException: Failed to start bean 'org.springframework.kafka.config.internalKafkaListenerEndpointRegistry'; nested exception is org.apache.kafka.common.KafkaException: Failed to construct kafka consumer
    at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:176) ~[spring-context-4.3.6.RELEASE.jar:4.3.6.RELEASE]
    at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:51) ~[spring-context-4.3.6.RELEASE.jar:4.3.6.RELEASE]
    at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:346) ~[spring-context-4.3.6.RELEASE.jar:4.3.6.RELEASE]
    at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:149) ~[spring-context-4.3.6.RELEASE.jar:4.3.6.RELEASE]
    at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:112) ~[spring-context-4.3.6.RELEASE.jar:4.3.6.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:879) ~[spring-context-4.3.6.RELEASE.jar:4.3.6.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:545) ~[spring-context-4.3.6.RELEASE.jar:4.3.6.RELEASE]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:737) [spring-boot-1.5.1.RELEASE.jar:1.5.1.RELEASE]
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:370) [spring-boot-1.5.1.RELEASE.jar:1.5.1.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:314) [spring-boot-1.5.1.RELEASE.jar:1.5.1.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1162) [spring-boot-1.5.1.RELEASE.jar:1.5.1.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1151) [spring-boot-1.5.1.RELEASE.jar:1.5.1.RELEASE]
    at com.ubs.wma.bmss.BmssConsumerApp.main(BmssConsumerApp.java:12) [classes/:na]
Caused by: org.apache.kafka.common.KafkaException: Failed to construct kafka consumer
    at org.apache.kafka.clients.consumer.KafkaConsumer.<init>(KafkaConsumer.java:703) ~[kafka-clients-0.10.1.1.jar:na]
    at org.apache.kafka.clients.consumer.KafkaConsumer.<init>(KafkaConsumer.java:553) ~[kafka-clients-0.10.1.1.jar:na]
    at org.springframework.kafka.core.DefaultKafkaConsumerFactory.createKafkaConsumer(DefaultKafkaConsumerFactory.java:73) ~[spring-kafka-1.1.2.RELEASE.jar:na]
    at org.springframework.kafka.core.DefaultKafkaConsumerFactory.createConsumer(DefaultKafkaConsumerFactory.java:69) ~[spring-kafka-1.1.2.RELEASE.jar:na]
    at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.<init>(KafkaMessageListenerContainer.java:305) ~[spring-kafka-1.1.2.RELEASE.jar:na]
    at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.<init>(KafkaMessageListenerContainer.java:230) ~[spring-kafka-1.1.2.RELEASE.jar:na]
    at org.springframework.kafka.listener.KafkaMessageListenerContainer.doStart(KafkaMessageListenerContainer.java:180) ~[spring-kafka-1.1.2.RELEASE.jar:na]
    at org.springframework.kafka.listener.AbstractMessageListenerContainer.start(AbstractMessageListenerContainer.java:202) ~[spring-kafka-1.1.2.RELEASE.jar:na]
    at org.springframework.kafka.listener.ConcurrentMessageListenerContainer.doStart(ConcurrentMessageListenerContainer.java:124) ~[spring-kafka-1.1.2.RELEASE.jar:na]
    at org.springframework.kafka.listener.AbstractMessageListenerContainer.start(AbstractMessageListenerContainer.java:202) ~[spring-kafka-1.1.2.RELEASE.jar:na]
    at org.springframework.kafka.config.KafkaListenerEndpointRegistry.startIfNecessary(KafkaListenerEndpointRegistry.java:287) ~[spring-kafka-1.1.2.RELEASE.jar:na]
    at org.springframework.kafka.config.KafkaListenerEndpointRegistry.start(KafkaListenerEndpointRegistry.java:236) ~[spring-kafka-1.1.2.RELEASE.jar:na]
    at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:173) ~[spring-context-4.3.6.RELEASE.jar:4.3.6.RELEASE]
    ... 12 common frames omitted
Caused by: org.apache.kafka.common.KafkaException: Could not instantiate class org.springframework.kafka.support.serializer.JsonDeserializer
    at org.apache.kafka.common.utils.Utils.newInstance(Utils.java:316) ~[kafka-clients-0.10.1.1.jar:na]
    at org.apache.kafka.common.config.AbstractConfig.getConfiguredInstance(AbstractConfig.java:203) ~[kafka-clients-0.10.1.1.jar:na]
    at org.apache.kafka.clients.consumer.KafkaConsumer.<init>(KafkaConsumer.java:632) ~[kafka-clients-0.10.1.1.jar:na]
    ... 24 common frames omitted
Caused by: java.lang.IllegalAccessException: Class org.apache.kafka.common.utils.Utils can not access a member of class org.springframework.kafka.support.serializer.JsonDeserializer with modifiers "protected"
    at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:102) ~[na:1.8.0_121]
    at java.lang.Class.newInstance(Class.java:436) ~[na:1.8.0_121]
    at org.apache.kafka.common.utils.Utils.newInstance(Utils.java:314) ~[kafka-clients-0.10.1.1.jar:na]
    ... 26 common frames omitted
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-23 15:58:05

根据我们所拥有的文档:

对于更复杂或更特殊的情况,KafkaConsumerKafkaProducer分别提供重载构造函数来接受键和/或值的(De)Serializer实例。

为了满足此API,DefaultKafkaProducerFactoryDefaultKafkaConsumerFactory还提供了允许向目标Producer/Consumer注入自定义(De)Serializer的属性。

以及进一步的Apache Kafka JavaDocs:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * A producer is instantiated by providing a set of key-value pairs as configuration, a key and a value {@link Serializer}.
 * Valid configuration strings are documented <a href="http://kafka.apache.org/documentation.html#producerconfigs">here</a>.
 * Values can be either strings or Objects of the appropriate type (for example a numeric configuration would accept
 * either the string "42" or the integer 42).
 * @param configs   The producer configs
 * @param keySerializer  The serializer for key that implements {@link Serializer}. The configure() method won't be
 *                       called in the producer when the serializer is passed in directly.
 * @param valueSerializer  The serializer for value that implements {@link Serializer}. The configure() method won't
 *                         be called in the producer when the serializer is passed in directly.
 */
public KafkaProducer(Map<String, Object> configs, Serializer<K> keySerializer, Serializer<V> valueSerializer) {

因此,您需要的是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Bean
public ConsumerFactory<Long, String> consumerFactory() {
    return new DefaultKafkaConsumerFactory<>(consumerConfig(), null, new JsonDeserializer(Foo.class));
}

JsonDeserializer不能被反射实例化的问题,因为它需要特定的类型来反序列化。

票数 11
EN

Stack Overflow用户

发布于 2020-04-26 20:01:30

您可以尝试向pom.xml添加到faster.xml的依赖项。它解决了我的问题。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<dependency>
     <groupId>com.fasterxml.jackson.core</groupId>
     <artifactId>jackson-databind</artifactId>
</dependency>
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42419526

复制
相关文章
类的实例化顺序
讲讲类的实例化顺序,比如父类静态数据,构造函数,字段,子类静态数据,构造函数,字段,当 new 的时候,他们的执行顺序。 先说结论,顺序为: 父类静态变量、 父类静态代码块、 子类静态变量、 子类静态代码块、 父类非静态变量(父类实例成员变量)、 父类构造函数、 子类非静态变量(子类实例成员变量)、 子类构造函数。 代码举例说明: A.java public class A { int a1 = 8; static int a3 = getA3(); int a2 = getA
Li_XiaoJin
2022/06/10
1.2K0
[C#] 在类里实例化自身的应用实例<上位机通信>
比如上位机需要做Modbus的通信.B/S架构,事先不知道有多少个链接.有需要是时候才实例化并保存通信连接...
科控物联
2022/03/29
3K0
[C#] 在类里实例化自身的应用实例<上位机通信>
Java类如何防止被实例化
有一些类不想被实例化, 比如静态方法的工具类, 这时要对类进行特殊处理 其中有两点需要注意: 防止通过new实例化 - 解决办法:使用 private 修饰符进行限制 防止通过反射实例化 - 解决办法:抛出 Error 进行限制(如果不抛出异常, 只通过private进行限制, 则通过反射依然能被实例化) 代码如下: // 不可实例化工具类 public final class MyUtils { private MyUtils() { throw new AssertionErro
夹胡碰
2020/08/14
1.8K0
Dart - 抽象类的实例化
Dart 抽象类可以只声明方法,也可以有具体的方法实现,但是不能直接用抽象类来创建实例,只能被继承使用或者充当接口。
LinXunFeng
2020/06/08
2.8K0
Dart - 抽象类的实例化
探秘static——类不需实例化就能用?
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/details/26224679
DannyHoo
2018/09/13
1.1K0
探秘static——类不需实例化就能用?
java之简单类对象实例化过程
假设现在有这么一个类: public class Person{ public Person(){} String name = "tom"; int age = 1; int sex = 0; public void showInfo(){ System.out.println(this.name); System.out.println(this.age); System.out.println(this.sex);
西西嘛呦
2020/08/26
9090
【说站】python类实例化如何实现
1、类的实例化就是在类对象后面加上一个括号,就是调用类的实例化方法,完成实例化。实例化就真正创建一个该类的对象(实例)。
很酷的站长
2022/11/23
8320
【说站】python类实例化如何实现
JAVA——类的定义及其实例化
1.Java中的类 类可以看成是创建Java对象的模板 修饰符 class 类名{     修饰符 数据类型 属性名(成员变量);//属性     //构造方法(无修饰符,无返回值,名称和类名一样)      //方法(成员函数) }        通过下面一个例子,简单理解一下Java类的定义 public class CAT{// public是类的修饰符,class是定义类的关键字,CAT是类名     String name;     int age;//name、age是类的成员变量     v
mathor
2018/06/22
1.3K0
【说站】python类如何实例化对象
1、把类看作是定制的数据类型。既然是类型,只能用来表示数据的类型,不能直接用来保存数据。要保存数据,首先需要创建一个类似于这类容器的东西,称为对象(或例子)。通过类别产生对象的过程称为例子。
很酷的站长
2022/11/23
1.4K0
【说站】python类如何实例化对象
深入分析Java反射(五)-类实例化和类加载
其实在前面写过的《深入分析Java反射(一)-核心类库和方法》已经介绍过通过类名或者java.lang.Class实例去实例化一个对象,在《浅析Java中的资源加载》中也比较详细地介绍过类加载过程中的双亲委派模型,这篇文章主要是加深一些对类实例化和类加载的认识。
Throwable
2020/06/23
1.5K0
Java | 类、实例初始化 、方法重写规则
.29.
2023/10/17
1760
mysqldump备份任务在crontab未能完全正确执行解决实例
crontab是每个运维一线人员必须掌握的技术,熟练运用crontab可以自动帮助我们执行重复性的工作,提高运维的工作效率。它就像一个闹钟,在特定的时间,准时响应并执行相应的任务。如果你的工作经常与Linux打交道,那么你可以继续往下看,了解crontab的一般性故障排查。
星哥玩云
2022/08/16
4470
根据类名的字符串实例化
假设你的源码定义了类CDemoClass,那么new CDemoClass()可以实例化CDemoClass。那么如果给你一个字符串“CDemoClass”,怎么实例化出CDemoClass呢?new "CDemoClass" 编译器就不让你通过了。
gaigai
2021/04/13
2.4K0
Java 抽象类能不能实例化
在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
HoneyMoose
2023/09/10
1810
Java 抽象类能不能实例化
抽象类为什么不能被实例化?
首先,语法上,抽象类不能被实例化,这是语法规定。强制实例化一个抽象类的代码,编译器会报错。
用户6557940
2023/09/06
7200
抽象类为什么不能被实例化?
类和实例
面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。
用户8442333
2021/07/11
3140
类和实例
面向对象最重要的概念就是类(Class)和实例(Instance),类是抽象的模板,实例是根据类创建出来的一个个具体的“对象” 每个对象都拥有相同的方法,但各自的数据可能不同
py3study
2020/01/15
4810
self,和类实例化加不加括号的理解
# class Dog(object): # def talk(self): # print('汪汪~~~') # print(self) # self就是对象,默认将对象传递到类方法,self不需要程序手动传递 # # erha = Dog() # talk是一个函数,是类里面的函数,只有对象能使用:对象名.函数名() # erha.talk() # print(erha) # # samo = Dog() # samo.talk() # print(samo) c
汪凡
2018/05/29
8840
【说站】python类如何自定义实例化
以上就是python类自定义实例化的方法,希望对大家有所帮助。更多Python学习指路:python基础教程
很酷的站长
2022/11/23
7390
python 类的创建, 实例化, 初始化以及面向对象(4.1)
子类可以继承父类的所有属性和方法, 但是同时子类也可以重写父类的属性和方法, 达到自定义的目的.
友儿
2022/09/28
1.2K0

相似问题

Spring :未能实例化服务类NullPointerException

18

由于未能实例化依赖模块,未能实例化模块

11

DynamoDB NoSQL并未能实例化类的新实例

31

未能使用AndroidPlatform实例化ProGuard类

10

如何解决“未能实例化WebApplicationInitializer类”

26
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文