Skip to content

ClassNotFoundException: io.kafbat.ui.serde.glue.GlueSerde #73

@DmitryGladky

Description

@DmitryGladky

Im trying to add Glue Schema to KafkaUI.
It is working fine without it or with Confluent one, but unable to start with Glue.

Here Env:


  environment:
    - name: KAFKA_CLUSTERS_0_NAME
      value: "msk"
    - name: KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS
      value: "boot:9098"
    - name: KAFKA_CLUSTERS_0_PROPERTIES_SECURITY_PROTOCOL
      value: "SASL_SSL"
    - name: KAFKA_CLUSTERS_0_PROPERTIES_SASL_MECHANISM
      value: "AWS_MSK_IAM"
    - name: KAFKA_CLUSTERS_0_PROPERTIES_SASL_CLIENT_CALLBACK_HANDLER_CLASS
      value: "software.amazon.msk.auth.iam.IAMClientCallbackHandler"
    - name: KAFKA_CLUSTERS_0_PROPERTIES_SASL_JAAS_CONFIG
      value: "software.amazon.msk.auth.iam.IAMLoginModule required awsDebugCreds=true;"
    - name: KAFKA_CLUSTERS_1_NAME
      value: "msk-2"
    - name: KAFKA_CLUSTERS_1_BOOTSTRAPSERVERS
      value: "boot2:9098"
    - name: KAFKA_CLUSTERS_1_PROPERTIES_SECURITY_PROTOCOL
      value: "SASL_SSL"
    - name: KAFKA_CLUSTERS_1_PROPERTIES_SASL_MECHANISM
      value: "AWS_MSK_IAM"
    - name: KAFKA_CLUSTERS_1_PROPERTIES_SASL_CLIENT_CALLBACK_HANDLER_CLASS
      value: "software.amazon.msk.auth.iam.IAMClientCallbackHandler"
    - name: KAFKA_CLUSTERS_1_PROPERTIES_SASL_JAAS_CONFIG
      value: "software.amazon.msk.auth.iam.IAMLoginModule required awsDebugCreds=true;"
    - name: kafka.clusters.1.serde.0.name
      value: "GlueSchemaRegistry"
    - name: kafka.clusters.1.serde.0.filePath
      value: "/glue-serde/kafkaui-glue-serde.jar"
    - name: kafka.clusters.1.serde.0.className
      value: "io.kafbat.ui.serde.glue.GlueSerde"
    - name: kafka.clusters.1.serde.0.properties.region
      value: "us-east-1"
    - name: kafka.clusters.1.serde.0.properties.registry
      value: "SR"
    - name: KAFKA_CLUSTERS_0_DISABLELOGDIRS
      value: "true"  #  This is the key fix
    - name: KAFKA_CLUSTERS_0_DISABLELOGDIRSCOLLECTION
      value: "true"
    - name: KAFKA_CLUSTERS_1_DISABLELOGDIRS
      value: "true"  #  This is the key fix
    - name: KAFKA_CLUSTERS_1_DISABLELOGDIRSCOLLECTION
      value: "true"

And Docker:

FROM ghcr.io/kafbat/kafka-ui:v1.1.0

USER root

RUN mkdir /glue-serde
RUN wget -c https://github.com/kafbat/ui-serde-glue/releases/download/v1.1.0/serde-glue-v1.1.0-jar-with-dependencies.jar -o /glue-serde/kafkaui-glue-serde.jar

USER kafkaui

EXPOSE 80

I also tried with ghcr.io/kafbat/kafka-ui:latest

And Stack trace:

2025-05-28 23:05:43,897 ERROR [main] o.s.b.SpringApplication: Application run failed
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'messagesController' defined in URL [jar:nested:/api.jar/!BOOT-INF/classes/!/io/kafbat/ui/controller/MessagesController.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'messagesService' defined in URL [jar:nested:/api.jar/!BOOT-INF/classes/!/io/kafbat/ui/service/MessagesService.class]: Unsatisfied dependency expressed through constructor parameter 1: Error creating bean with name 'deserializationService' defined in URL [jar:nested:/api.jar/!BOOT-INF/classes/!/io/kafbat/ui/service/DeserializationService.class]: Failed to instantiate [io.kafbat.ui.service.DeserializationService]: Constructor threw exception
	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:804)
	at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:240)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1377)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1214)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:563)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523)
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:336)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:289)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:334)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.instantiateSingleton(DefaultListableBeanFactory.java:1122)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingleton(DefaultListableBeanFactory.java:1093)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:1030)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:987)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:627)
	at org.springframework.boot.web.reactive.context.ReactiveWebServerApplicationContext.refresh(ReactiveWebServerApplicationContext.java:66)
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:752)
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:318)
	at io.kafbat.ui.KafkaUiApplication.startApplication(KafkaUiApplication.java:24)
	at io.kafbat.ui.KafkaUiApplication.main(KafkaUiApplication.java:17)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:102)
	at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:64)
	at org.springframework.boot.loader.launch.JarLauncher.main(JarLauncher.java:40)
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'messagesService' defined in URL [jar:nested:/api.jar/!BOOT-INF/classes/!/io/kafbat/ui/service/MessagesService.class]: Unsatisfied dependency expressed through constructor parameter 1: Error creating bean with name 'deserializationService' defined in URL [jar:nested:/api.jar/!BOOT-INF/classes/!/io/kafbat/ui/service/DeserializationService.class]: Failed to instantiate [io.kafbat.ui.service.DeserializationService]: Constructor threw exception
	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:804)
	at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:240)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1377)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1214)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:563)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523)
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:336)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:289)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:334)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
	at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1631)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1519)
	at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:913)
	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791)
	... 25 common frames omitted
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'deserializationService' defined in URL [jar:nested:/api.jar/!BOOT-INF/classes/!/io/kafbat/ui/service/DeserializationService.class]: Failed to instantiate [io.kafbat.ui.service.DeserializationService]: Constructor threw exception
	at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:321)
	at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:309)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1377)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1214)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:563)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523)
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:336)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:289)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:334)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
	at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1631)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1519)
	at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:913)
	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791)
	... 39 common frames omitted
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [io.kafbat.ui.service.DeserializationService]: Constructor threw exception
	at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:222)
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:145)
	at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:318)
	... 53 common frames omitted
Caused by: java.lang.ClassNotFoundException: io.kafbat.ui.serde.glue.GlueSerde
	at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:445)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:593)
	at io.kafbat.ui.serdes.CustomSerdeLoader$ChildFirstClassloader.loadClass(CustomSerdeLoader.java:122)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
	at io.kafbat.ui.serdes.CustomSerdeLoader.loadAndConfigure(CustomSerdeLoader.java:45)
	at io.kafbat.ui.serdes.SerdesInitializer.loadAndInitCustomSerde(SerdesInitializer.java:265)
	at io.kafbat.ui.serdes.SerdesInitializer.createSerdeFromConfig(SerdesInitializer.java:186)
	at io.kafbat.ui.serdes.SerdesInitializer.init(SerdesInitializer.java:105)
	at io.kafbat.ui.service.DeserializationService.<init>(DeserializationService.java:40)
	at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62)
	at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486)
	at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:209)
	... 55 common frames omitted

Metadata

Metadata

Assignees

No one assigned

    Labels

    scope/backendRelated to backend changestype/bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions