-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Closed
Description
An example is this code snippet from KafkaMessageDrivenChannelAdapter
:
if (JacksonPresent.isJackson2Present()) {
MessagingMessageConverter messageConverter = new MessagingMessageConverter();
// For consistency with the rest of Spring Integration channel adapters
messageConverter.setGenerateMessageId(true);
messageConverter.setGenerateTimestamp(true);
DefaultKafkaHeaderMapper headerMapper = new DefaultKafkaHeaderMapper();
headerMapper.addTrustedPackages(JacksonMessagingUtils.DEFAULT_TRUSTED_PACKAGES.toArray(new String[0]));
messageConverter.setHeaderMapper(headerMapper);
this.recordListener.setMessageConverter(messageConverter);
this.batchListener.setMessageConverter(messageConverter);
}
So, we are supposed to be in this if
only when JacksonPresent.isJackson2Present()
.
However that JacksonMessagingUtils.DEFAULT_TRUSTED_PACKAGES
is from Jackson 3 specific API.
And that leads to the:
Caused by: java.lang.NoClassDefFoundError: tools/jackson/databind/ValueSerializer
at org.springframework.integration.kafka.inbound.KafkaMessageDrivenChannelAdapter.<init>(KafkaMessageDrivenChannelAdapter.java:141)
Use deprecated JacksonJsonUtils
instead in those places.