killbill-coupon-plugin-demo Plugin fails to start -

27 views
Skip to first unread message

Vivek

unread,
Mar 24, 2025, 1:53:39 PM3/24/25
to Kill Bill users mailing-list
Hi,

I have noticed an error, "Unable to start bundle" (in FileInstall.java:169) when installing the coupon plugin, https://github.com/killbill/killbill-coupon-plugin-demo. I had compiled it with Java 11. I changed permissions of /var/tmp/bundles directory recursively to 777 but still got the same error.

Below, please find the error log:
{
  "@timestamp": "2025-03-22T00:35:42.431Z",
  "message": "Unable to start bundle",
  "logger_name": "org.killbill.billing.osgi.FileInstall",
  "thread_name": "main",
  "level": "WARN",
  "stack_trace": "org.osgi.framework.BundleException: Activator start error in bundle org.kill-bill.billing.plugin.java.coupon-demo-plugin [5].\n\tat org.apache.felix.framework.Felix.activateBundle(Felix.java:2479)\n\tat org.apache.felix.framework.Felix.startBundle(Felix.java:2335)\n\tat org.apache.felix.framework.BundleImpl.start(BundleImpl.java:1006)\n\tat org.apache.felix.framework.BundleImpl.start(BundleImpl.java:992)\n\tat org.killbill.billing.osgi.FileInstall.startBundle(FileInstall.java:169)\n\tat org.killbill.billing.osgi.BundleRegistry.startBundles(BundleRegistry.java:106)\n\tat org.killbill.billing.osgi.DefaultOSGIService.start(DefaultOSGIService.java:105)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.base/java.lang.reflect.Method.invoke(Method.java:566)\n\tat org.killbill.billing.lifecycle.DefaultLifecycle.doFireStage(DefaultLifecycle.java:158)\n\tat org.killbill.billing.lifecycle.DefaultLifecycle.fireSequence(DefaultLifecycle.java:145)\n\tat org.killbill.billing.lifecycle.DefaultLifecycle.fireStartupSequencePriorEventRegistration(DefaultLifecycle.java:79)\n\tat org.killbill.billing.server.listeners.KillbillPlatformGuiceListener.startLifecycle(KillbillPlatformGuiceListener.java:210)\n\tat org.killbill.billing.server.listeners.KillbillPlatformGuiceListener.contextInitialized(KillbillPlatformGuiceListener.java:106)\n\tat org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4007)\n\tat org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4448)\n\tat org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)\n\tat org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:599)\n\tat org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:571)\n\tat org.apache.catalina.core.StandardHost.addChild(StandardHost.java:603)\n\tat org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1175)\n\tat org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1888)\n\tat java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)\n\tat java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)\n\tat org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)\n\tat java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:118)\n\tat org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1086)\n\tat org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:470)\n\tat org.apache.catalina.startup.HostConfig.start(HostConfig.java:1584)\n\tat org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:312)\n\tat org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:114)\n\tat org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:402)\n\tat org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:345)\n\tat org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:776)\n\tat org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:721)\n\tat org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)\n\tat org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1203)\n\tat org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1193)\n\tat java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)\n\tat org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)\n\tat java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140)\n\tat org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:749)\n\tat org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:211)\n\tat org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)\n\tat org.apache.catalina.core.StandardService.startInternal(StandardService.java:415)\n\tat org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)\n\tat org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:878)\n\tat org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)\n\tat org.apache.catalina.startup.Catalina.start(Catalina.java:735)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.base/java.lang.reflect.Method.invoke(Method.java:566)\n\tat org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:345)\n\tat org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:473)\nCaused by: java.lang.NoClassDefFoundError: javax/servlet/http/HttpServlet\n\tat java.base/java.lang.Class.getDeclaredConstructors0(Native Method)\n\tat java.base/java.lang.Class.privateGetDeclaredConstructors(Class.java:3137)\n\tat java.base/java.lang.Class.getConstructor0(Class.java:3342)\n\tat java.base/java.lang.Class.newInstance(Class.java:556)\n\tat org.apache.felix.framework.Felix.createBundleActivator(Felix.java:4780)\n\tat org.apache.felix.framework.Felix.activateBundle(Felix.java:2410)\n\t... 56 common frames omitted\nCaused by: java.lang.ClassNotFoundException: javax.servlet.http.HttpServlet not found by org.kill-bill.billing.plugin.java.coupon-demo-plugin [5]\n\tat org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1591)\n\tat org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79)\n\tat org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1976)\n\tat java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:527)\n\t... 62 common frames omitted\n"
}

Please can you help.

Thank you,
Vivek

karan bansal

unread,
Mar 25, 2025, 9:48:41 AM3/25/25
to Kill Bill users mailing-list
Hi Vivek,

Looking at the compatibility history, it seems that it would work with 0.22.x and Java 8. I will check internally about this. You can refer to CouponDemoEntitlementPluginApi.java as an example for the entitlement plugin in the meantime. 

Regards
Karan

Vivek

unread,
Mar 26, 2025, 2:37:21 AM3/26/25
to karan bansal, Kill Bill users mailing-list
I tried with killbill version 0.22.31 and Java 8. It worked. Thanks.

Thank you,
Vivek


--
You received this message because you are subscribed to the Google Groups "Kill Bill users mailing-list" group.
To unsubscribe from this group and stop receiving emails from it, send an email to killbilling-us...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/killbilling-users/06e4f151-8f39-4ea0-b19e-11992331a793n%40googlegroups.com.

Vivek Manpuria (Vivek)

unread,
Mar 27, 2025, 5:25:22 AM3/27/25
to Kill Bill users mailing-list
Hi Karan

Could you provide some pointers on things to play with, so that the coupon plugin can start with the latest killbill version 0.24.x.

Thank you,
Vivek

Vivek

unread,
Mar 27, 2025, 11:18:01 PM3/27/25
to Kill Bill users mailing-list
I got it to work with the latest killbill. It only required changes to a couple of method signatures.

Thank you,
Vivek


stephane brossier

unread,
Mar 28, 2025, 3:24:19 AM3/28/25
to Vivek, Kill Bill users mailing-list
Hi Vicek,

Are you planning on submitting a PR with the fixes?

Stéphane

Vivek

unread,
Apr 11, 2025, 8:52:20 AM4/11/25
to stephane brossier, Kill Bill users mailing-list
Yes. Let me move the files from the helloworld plugin to the coupons plugin and then raise a PR.

- Vivek

Vivek Manpuria (Vivek)

unread,
May 15, 2025, 1:11:44 AM5/15/25
to Kill Bill users mailing-list
Hi Stephane,

Please could you grant permission to my github account, vmanpuria to allow raising a PR on the killbill/killbill-coupon-plugin-demo.git repository.

Here is the error message:

vivekmanpuria@Viveks-MacBook-Air killbill-coupon-plugin-demo % git push --set-upstream origin version-update

remote: Permission to killbill/killbill-coupon-plugin-demo.git denied to vmanpuria.

fatal: unable to access 'https://github.com/killbill/killbill-coupon-plugin-demo.git/': The requested URL returned error: 403


Thank you
Vivek
Reply all
Reply to author
Forward
0 new messages