Mop 4.0.6.5 start failed: NoClassDefFoundError MQTTCommonConfiguration

Open
#1,818 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
25/100
Issue type
Bug
Clarity
Needs clarification
Activity status
Stale
Tech stack
java
Domain
backend

Research direction

Start with the NoClassDefFoundError at MQTTProtocolHandler.java:80 and the NarClassLoader warning that META-INF/bundled-dependencies is missing. Inspect the pulsar-protocol-handler-mqtt-4.0.6.5.nar and its compatibility with Pulsar 4.0.4; done means the broker starts successfully with the MQTT handler enabled.

Written by the indexing model from the issue text.

Description

Describe the bug
I deployed a Pulsar cluster (Pulsar version 4.0.4) using the helm chart pulsar-4.0.1 in a K8s environment, and added the following configurations in the configuration file.


messagingProtocols=mqtt
mqttListeners=mqtt://0.0.0.0:1883
mqttProxyEnabled=true
mqttProxyPort=5682
protocolHandlerDirectory=/tmp/protocols
advertisedAddress=

he pulsar-protocol-handler-mqtt-4.0.6.5.nar file has been copied into the container and is located in the specified directory. However, the startup failed with an error that appears to be a NoClassDefFoundError.

2025-09-16T05:48:32,149+0000 [main-EventThread] INFO org.apache.bookkeeper.zookeeper.ZooKeeperWatcherBase - ZooKeeper client is connected now.
2025-09-16T05:48:32,312+0000 [main] INFO org.apache.pulsar.broker.protocol.ProtocolHandlerUtils - Searching for protocol handlers in /tmp/protocols
2025-09-16T05:48:32,314+0000 [main] INFO org.apache.pulsar.common.nar.NarUnpacker - Created directory /tmp/pulsar-nar/pulsar-protocol-handler-mqtt-4.0.6.5.nar-unpacked
2025-09-16T05:48:32,322+0000 [main] INFO org.apache.pulsar.common.nar.NarUnpacker - Extracting /tmp/protocols/pulsar-protocol-handler-mqtt-4.0.6.5.nar to /tmp/pulsar-nar/pulsar-protocol-handler-mqtt-4.0.6.5.nar-unpacked/nQ63wb1tPstKeJWR8INbKw.tmp
2025-09-16T05:48:32,336+0000 [main] WARN org.apache.pulsar.common.nar.NarClassLoader - /tmp/pulsar-nar/pulsar-protocol-handler-mqtt-4.0.6.5.nar-unpacked/nQ63wb1tPstKeJWR8INbKw does not contain META-INF/bundled-dependencies!
2025-09-16T05:48:32,342+0000 [main] INFO org.apache.pulsar.broker.protocol.ProtocolHandlerUtils - Found protocol handler from /tmp/protocols/pulsar-protocol-handler-mqtt-4.0.6.5.nar : ProtocolHandlerDefinition(name=mqtt, description=MQTT Protocol Handler, handlerClass=io.streamnative.pulsar.handlers.mqtt.broker.MQTTProtocolHandler)
2025-09-16T05:48:32,346+0000 [main] WARN org.apache.pulsar.common.nar.NarClassLoader - /tmp/pulsar-nar/pulsar-protocol-handler-mqtt-4.0.6.5.nar-unpacked/nQ63wb1tPstKeJWR8INbKw does not contain META-INF/bundled-dependencies!
2025-09-16T05:48:32,350+0000 [main] INFO org.apache.pulsar.broker.protocol.ProtocolHandlers - Successfully loaded protocol handler for protocol mqtt
2025-09-16T05:48:32,355+0000 [main] ERROR org.apache.pulsar.PulsarBrokerStarter - Failed to start pulsar service.
java.lang.NoClassDefFoundError: io/streamnative/pulsar/handlers/mqtt/common/MQTTCommonConfiguration
at java.base/java.lang.ClassLoader.defineClass1(Native Method) ~[?:?]
at java.base/java.lang.ClassLoader.defineClass(Unknown Source) ~[?:?]
at java.base/java.security.SecureClassLoader.defineClass(Unknown Source) ~[?:?]
at java.base/java.net.URLClassLoader.defineClass(Unknown Source) ~[?:?]
at java.base/java.net.URLClassLoader$1.run(Unknown Source) ~[?:?]
at java.base/java.net.URLClassLoader$1.run(Unknown Source) ~[?:?]
at java.base/java.security.AccessController.doPrivileged(Unknown Source) ~[?:?]
at java.base/java.net.URLClassLoader.findClass(Unknown Source) ~[?:?]
at java.base/java.lang.ClassLoader.loadClass(Unknown Source) ~[?:?]
at org.apache.pulsar.common.nar.NarClassLoader.loadClass(NarClassLoader.java:303) ~[org.apache.pulsar-pulsar-common-4.0.4.jar:4.0.4]
at java.base/java.lang.ClassLoader.loadClass(Unknown Source) ~[?:?]
at io.streamnative.pulsar.handlers.mqtt.broker.MQTTProtocolHandler.initialize(MQTTProtocolHandler.java:80) ~[?:?]
at org.apache.pulsar.broker.protocol.ProtocolHandlerWithClassLoader.initialize(ProtocolHandlerWithClassLoader.java:71) ~[org.apache.pulsar-pulsar-broker-4.0.4.jar:4.0.4]
at org.apache.pulsar.broker.protocol.ProtocolHandlers.initialize(ProtocolHandlers.java:116) ~[org.apache.pulsar-pulsar-broker-4.0.4.jar:4.0.4]
at org.apache.pulsar.broker.PulsarService.start(PulsarService.java:908) ~[org.apache.pulsar-pulsar-broker-4.0.4.jar:4.0.4]
at org.apache.pulsar.PulsarBrokerStarter$BrokerStarter.call(PulsarBrokerStarter.java:275) ~[org.apache.pulsar-pulsar-broker-4.0.4.jar:4.0.4]
at org.apache.pulsar.PulsarBrokerStarter$BrokerStarter.call(PulsarBrokerStarter.java:130) ~[org.apache.pulsar-pulsar-broker-4.0.4.jar:4.0.4]
at picocli.CommandLine.executeUserObject(CommandLine.java:2041) ~[info.picocli-picocli-4.7.5.jar:4.7.5]
at picocli.CommandLine.access$1500(CommandLine.java:148) ~[info.picocli-picocli-4.7.5.jar:4.7.5]
at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2461) ~[info.picocli-picocli-4.7.5.jar:4.7.5]
at picocli.CommandLine$RunLast.handle(CommandLine.java:2453) ~[info.picocli-picocli-4.7.5.jar:4.7.5]
at picocli.CommandLine$RunLast.handle(CommandLine.java:2415) ~[info.picocli-picocli-4.7.5.jar:4.7.5]
at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2273) ~[info.picocli-picocli-4.7.5.jar:4.7.5]
at picocli.CommandLine$RunLast.execute(CommandLine.java:2417) ~[info.picocli-picocli-4.7.5.jar:4.7.5]
at picocli.CommandLine.execute(CommandLine.java:2170) ~[info.picocli-picocli-4.7.5.jar:4.7.5]
at org.apache.pulsar.PulsarBrokerStarter$BrokerStarter.start(PulsarBrokerStarter.java:151) ~[org.apache.pulsar-pulsar-broker-4.0.4.jar:4.0.4]
at org.apache.pulsar.PulsarBrokerStarter.main(PulsarBrokerStarter.java:366) [org.apache.pulsar-pulsar-broker-4.0.4.jar:4.0.4]
Caused by: java.lang.ClassNotFoundException: io.streamnative.pulsar.handlers.mqtt.common.MQTTCommonConfiguration
at java.base/java.net.URLClassLoader.findClass(Unknown Source) ~[?:?]
at java.base/java.lang.ClassLoader.loadClass(Unknown Source) ~[?:?]
at org.apache.pulsar.common.nar.NarClassLoader.loadClass(NarClassLoader.java:303) ~[org.apache.pulsar-pulsar-common-4.0.4.jar:4.0.4]
at java.base/java.lang.ClassLoader.loadClass(Unknown Source) ~[?:?]
... 27 more
2025-09-16T05:48:32,364+0000 [main] WARN org.apache.pulsar.common.util.ShutdownUtil - Triggering immediate shutdown of current process with status 1
java.lang.Exception: Stacktrace for immediate shutdown
at org.apache.pulsar.common.util.ShutdownUtil.triggerImmediateForcefulShutdown(ShutdownUtil.java:55) [org.apache.pulsar-pulsar-common-4.0.4.jar:4.0.4]
at org.apache.pulsar.common.util.ShutdownUtil.triggerImmediateForcefulShutdown(ShutdownUtil.java:50) [org.apache.pulsar-pulsar-common-4.0.4.jar:4.0.4]
at org.apache.pulsar.common.util.ShutdownUtil.triggerImmediateForcefulShutdown(ShutdownUtil.java:82) [org.apache.pulsar-pulsar-common-4.0.4.jar:4.0.4]
at org.apache.pulsar.PulsarBrokerStarter.main(PulsarBrokerStarter.java:372) [org.apache.pulsar-pulsar-broker-4.0.4.jar:4.0.4]


The logs indicate the protocol handler was loaded, but the broker fails to start due to an error.

Dominant language
Java
Stars
190
Forks
56
Avg merge
27m
Merged PRs (30d)
1

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from streamnative/mop

All issues in streamnative/mop

Similar issues

More Java issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.