apache / apache/pulsar

[Bug] Getting class not found exception when I try to initialise PulsarClient/PulsarAdmin

Open
#21,296 2 comments 0 reactions 0 assignees View on GitHub
Stale type/bug
Dominant language
Java
Stars
15.3k
Forks
3.8k
Avg merge
1d 14h
Merged PRs (30d)
160

Description

### Search before asking

- [X] I searched in the [issues](https://github.com/apache/pulsar/issues) and found nothing similar.

### Version


**Environments**

```
karaf - 4.4.3
openjdk version "17.0.6" 2023-01-17
Maven - 3.9.1
```

**Used Dependencies**

```

org.apache.pulsar
pulsar-client-all
3.1.0

```

**Sample Snippet**

```
pulsarAdmin = PulsarAdmin.builder().serviceHttpUrl(adminUrl).build();
pulsarClient = PulsarClient.builder().serviceUrl(clientUrl).build();
```

### Minimal reproduce step

When I try to execute the code by creating a normal JAR and execute it on terminal using java -jar , i'm getting valid response.

If i create an OSGI bundle and installed my code on KARAF, i'm getting class not found exception. Need your help on this

### What did you expect to see?

Pulsar client and admin should be created without making any errors

### What did you see instead?

```

java.lang.ClassNotFoundException: org.apache.pulsar.client.api.PulsarClient not found by wrap_file__Users_kumarselvadg_.m2_repository_org_apache_pulsar_pulsar-client-all_3.1.0_pulsar-client-all-3.1.0.jar [201]
at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1591)
at org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79)
at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1976)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
at org.apache.felix.framework.BundleWiringImpl.getClassByDelegation(BundleWiringImpl.java:1358)
at org.apache.felix.framework.BundleWiringImpl.searchImports(BundleWiringImpl.java:1612)
at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1528)
at org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79)
at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1976)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:375)
at com.tlc.queue.internal.pulsar.PulsarService.start(PulsarService.java:67)
at com.tlc.queue.QueueAccess.start(QueueAccess.java:92)
at org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:849)
at org.apache.felix.framework.Felix.activateBundle(Felix.java:2429)
at org.apache.felix.framework.Felix.startBundle(Felix.java:2335)
at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:1006)
at org.apache.karaf.bundle.command.Start.executeOnBundle(Start.java:38)
at org.apache.karaf.bundle.command.BundlesCommand.doExecute(BundlesCommand.java:65)
at org.apache.karaf.bundle.command.BundlesCommand.execute(BundlesCommand.java:55)
at org.apache.karaf.shell.impl.action.command.ActionCommand.execute(ActionCommand.java:84)
at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:68)
at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:86)
at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:599)
at org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:526)
at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:415)
at org.apache.felix.gogo.runtime.Pipe.doCall(Pipe.java:416)
at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:229)
at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:59)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
```

### Anything else?

_No response_

### Are you willing to submit a PR?

- [ ] I'm willing to submit a PR!

Contributor guide

Open the contributing guide

Research direction

Start at PulsarService.java:67 and QueueAccess.java:92, then reproduce the difference between running the dependency as a normal JAR and as an OSGi bundle in Karaf. Inspect the pulsar-client-all 3.1.0 dependency and the reported class-loading failure; done means PulsarClient and PulsarAdmin initialize successfully in Karaf.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
backend, distributed-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
28/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.