Error in custom provider, java.lang.IllegalStateException: java.io.FileNotFoundException: \C

717 views
Skip to first unread message

pka...@gmail.com

unread,
Sep 6, 2014, 1:11:00 PM9/6/14
to killbill...@googlegroups.com
I downloaded latest "killbill-profiles-killbill-0.11.7-jar-with-dependencies.war", put in tomcat-7, but it doesn't load/start. Below is the error thrown, multiple times:

20:14:23.375 [localhost-startStop-1] INFO org.killbill.xmlloader.XMLLoader - Initializing an object of class org.killbill.automaton.DefaultStateMachineConfig from xml file at: jar:file:/C:/pk/tomcat-7.0.30/webapps/ROOT/WEB-INF/lib/killbill-payment-0.11.7.jar!/org/killbill/billing/payment/PaymentStates.xml
20:14:23.375 [localhost-startStop-1] INFO org.killbill.xmlloader.XMLLoader - Initializing an object of class org.killbill.automaton.DefaultStateMachineConfig from xml file at: jar:file:/C:/pk/tomcat-7.0.30/webapps/ROOT/WEB-INF/lib/killbill-payment-0.11.7.jar!/org/killbill/billing/payment/PaymentStates.xml
20:14:23.390 [localhost-startStop-1] INFO org.killbill.xmlloader.XMLLoader - Initializing an object of class org.killbill.automaton.DefaultStateMachineConfig from xml file at: jar:file:/C:/pk/tomcat-7.0.30/webapps/ROOT/WEB-INF/lib/killbill-payment-0.11.7.jar!/org/killbill/billing/payment/PaymentStates.xml
20:14:23.390 [localhost-startStop-1] INFO org.killbill.xmlloader.XMLLoader - Initializing an object of class org.killbill.automaton.DefaultStateMachineConfig from xml file at: jar:file:/C:/pk/tomcat-7.0.30/webapps/ROOT/WEB-INF/lib/killbill-payment-0.11.7.jar!/org/killbill/billing/payment/PaymentStates.xml
20:14:23.390 [localhost-startStop-1] INFO o.k.b.p.p.DefaultPaymentProviderPluginRegistry - DefaultPaymentControlProviderPluginRegistry registering service __DEFAULT_PAYMENT_CONTROL__
20:14:23.390 [localhost-startStop-1] INFO o.k.b.p.p.DefaultPaymentProviderPluginRegistry - DefaultPaymentControlProviderPluginRegistry registering service __INVOICE_PAYMENT_CONTROL_PLUGIN__
20:14:23.390 [localhost-startStop-1] INFO org.killbill.xmlloader.XMLLoader - Initializing an object of class org.killbill.automaton.DefaultStateMachineConfig from xml file at: jar:file:/C:/pk/tomcat-7.0.30/webapps/ROOT/WEB-INF/lib/killbill-payment-0.11.7.jar!/org/killbill/billing/payment/PaymentStates.xml
20:14:23.390 [localhost-startStop-1] INFO org.killbill.xmlloader.XMLLoader - Initializing an object of class org.killbill.automaton.DefaultStateMachineConfig from xml file at: jar:file:/C:/pk/tomcat-7.0.30/webapps/ROOT/WEB-INF/lib/killbill-payment-0.11.7.jar!/org/killbill/billing/payment/PaymentStates.xml
20:14:23.390 [localhost-startStop-1] INFO org.killbill.xmlloader.XMLLoader - Initializing an object of class org.killbill.automaton.DefaultStateMachineConfig from xml file at: jar:file:/C:/pk/tomcat-7.0.30/webapps/ROOT/WEB-INF/lib/killbill-payment-0.11.7.jar!/org/killbill/billing/payment/PaymentStates.xml
20:14:23.390 [localhost-startStop-1] INFO org.killbill.xmlloader.XMLLoader - Initializing an object of class org.killbill.automaton.DefaultStateMachineConfig from xml file at: jar:file:/C:/pk/tomcat-7.0.30/webapps/ROOT/WEB-INF/lib/killbill-payment-0.11.7.jar!/org/killbill/billing/payment/PaymentStates.xml
20:14:23.390 [localhost-startStop-1] INFO org.killbill.xmlloader.XMLLoader - Initializing an object of class org.killbill.automaton.DefaultStateMachineConfig from xml file at: jar:file:/C:/pk/tomcat-7.0.30/webapps/ROOT/WEB-INF/lib/killbill-payment-0.11.7.jar!/org/killbill/billing/payment/retry/RetryStates.xml
20:14:23.390 [localhost-startStop-1] INFO org.killbill.xmlloader.XMLLoader - Initializing an object of class org.killbill.automaton.DefaultStateMachineConfig from xml file at: jar:file:/C:/pk/tomcat-7.0.30/webapps/ROOT/WEB-INF/lib/killbill-payment-0.11.7.jar!/org/killbill/billing/payment/retry/RetryStates.xml
20:14:23.515 [localhost-startStop-1] WARN o.k.b.lifecycle.DefaultLifecycle - Failed to inject org.killbill.billing.platform.api.OSGIService
com.google.inject.ProvisionException: Guice provision errors:

1) Error in custom provider, java.lang.IllegalStateException: java.io.FileNotFoundException: \C (The system cannot find the file specified)
while locating org.killbill.billing.payment.glue.PaymentModule$StateMachineProvider annotated with @com.google.inject.name.Named(value=PaymentStateMachine)
while locating org.killbill.automaton.StateMachineConfig annotated with @com.google.inject.name.Named(value=PaymentStateMachine)
for parameter 0 at org.killbill.billing.payment.core.sm.PaymentAutomatonRunner.<init>(PaymentAutomatonRunner.java:84)
while locating org.killbill.billing.payment.core.sm.PaymentAutomatonRunner
for parameter 9 at org.killbill.billing.payment.core.PaymentProcessor.<init>(PaymentProcessor.java:103)
at org.killbill.billing.payment.glue.PaymentModule.installProcessors(PaymentModule.java:149)
while locating org.killbill.billing.payment.core.PaymentProcessor
for parameter 0 at org.killbill.billing.payment.api.DefaultPaymentApi.<init>(DefaultPaymentApi.java:56)
while locating org.killbill.billing.payment.api.DefaultPaymentApi
at org.killbill.billing.payment.glue.PaymentModule.configure(PaymentModule.java:164)
while locating org.killbill.billing.payment.api.PaymentApi
for parameter 0 at org.killbill.billing.osgi.DefaultOSGIKillbill.setPaymentApi(DefaultOSGIKillbill.java:85)
while locating org.killbill.billing.osgi.DefaultOSGIKillbill
at org.killbill.billing.osgi.glue.DefaultOSGIModule.configure(DefaultOSGIModule.java:94)
while locating org.killbill.billing.osgi.api.OSGIKillbill
for parameter 1 at org.killbill.billing.osgi.KillbillActivator.<init>(KillbillActivator.java:76)
at org.killbill.billing.osgi.glue.DefaultOSGIModule.configure(DefaultOSGIModule.java:90)
while locating org.killbill.billing.osgi.KillbillActivator
for parameter 4 at org.killbill.billing.osgi.DefaultOSGIService.<init>(DefaultOSGIService.java:61)
while locating org.killbill.billing.osgi.DefaultOSGIService
at org.killbill.billing.osgi.glue.DefaultOSGIModule.configure(DefaultOSGIModule.java:88)
while locating org.killbill.billing.platform.api.OSGIService

Sep 6, 2014 10:04:58 PM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Exception sending context initialized event to listener instance of class org.killbill.billing.server.listeners.KillbillGuiceListener
com.google.inject.CreationException: Guice creation errors:

1) Error in custom provider, java.lang.IllegalStateException: java.io.FileNotFoundException: \C (The system cannot find the file specified)
while locating org.killbill.billing.payment.glue.PaymentModule$StateMachineProvider annotated with @com.google.inject.name.Named(value=PaymentStateMachine)
while locating org.killbill.automaton.StateMachineConfig annotated with @com.google.inject.name.Named(value=PaymentStateMachine)
for parameter 0 at org.killbill.billing.payment.core.sm.PaymentAutomatonRunner.<init>(PaymentAutomatonRunner.java:84)
while locating org.killbill.billing.payment.core.sm.PaymentAutomatonRunner
for parameter 9 at org.killbill.billing.payment.core.PaymentProcessor.<init>(PaymentProcessor.java:103)
at org.killbill.billing.payment.glue.PaymentModule.installProcessors(PaymentModule.java:149)
while locating org.killbill.billing.payment.core.PaymentProcessor
for parameter 0 at org.killbill.billing.payment.api.DefaultPaymentApi.<init>(DefaultPaymentApi.java:56)
while locating org.killbill.billing.payment.api.DefaultPaymentApi
at org.killbill.billing.payment.glue.PaymentModule.configure(PaymentModule.java:164)
while locating org.killbill.billing.payment.api.PaymentApi
for parameter 0 at org.killbill.billing.osgi.DefaultOSGIKillbill.setPaymentApi(DefaultOSGIKillbill.java:85)
while locating org.killbill.billing.osgi.DefaultOSGIKillbill
at org.killbill.billing.osgi.glue.DefaultOSGIModule.configure(DefaultOSGIModule.java:94)
while locating org.killbill.billing.osgi.api.OSGIKillbill
for parameter 1 at org.killbill.billing.osgi.KillbillActivator.<init>(KillbillActivator.java:76)
at org.killbill.billing.osgi.glue.DefaultOSGIModule.configure(DefaultOSGIModule.java:90)
while locating org.killbill.billing.osgi.KillbillActivator
for parameter 4 at org.killbill.billing.osgi.DefaultOSGIService.<init>(DefaultOSGIService.java:61)
while locating org.killbill.billing.osgi.DefaultOSGIService
at org.killbill.billing.osgi.glue.DefaultOSGIModule.configure(DefaultOSGIModule.java:88)
while locating org.killbill.billing.platform.api.OSGIService
Caused by: java.lang.IllegalStateException: java.io.FileNotFoundException: \C (The system cannot find the file specified)
at org.killbill.billing.payment.glue.PaymentModule$StateMachineProvider.get(PaymentModule.java:129)
at org.killbill.billing.payment.glue.PaymentModule$StateMachineProvider.get(PaymentModule.java:116)
at com.google.inject.internal.BoundProviderFactory.get(BoundProviderFactory.java:55)
at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38)
at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62)
at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:84)
at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:254)
at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38)
at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62)
at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:84)
at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:254)
at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1031)
at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
at com.google.inject.Scopes$1$1.get(Scopes.java:65)
at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40)
at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38)
at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62)
at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:84)
at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:254)
at com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:54)
at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1031)
at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
at com.google.inject.Scopes$1$1.get(Scopes.java:65)
at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40)
at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38)
at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62)
at com.google.inject.internal.SingleMethodInjector.inject(SingleMethodInjector.java:83)
at com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:110)
at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:94)
at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:254)
at com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:54)
at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1031)
at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
at com.google.inject.Scopes$1$1.get(Scopes.java:65)
at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40)
at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38)
at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62)
at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:84)
at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:254)
at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1031)
at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
at com.google.inject.Scopes$1$1.get(Scopes.java:65)
at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40)
at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38)
at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62)
at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:84)
at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:254)
at com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:54)
at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1031)
at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
at com.google.inject.Scopes$1$1.get(Scopes.java:65)
at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40)
at com.google.inject.internal.InternalInjectorCreator$1.call(InternalInjectorCreator.java:204)
at com.google.inject.internal.InternalInjectorCreator$1.call(InternalInjectorCreator.java:198)
at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1024)
at com.google.inject.internal.InternalInjectorCreator.loadEagerSingletons(InternalInjectorCreator.java:198)
at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:179)
at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:109)
at com.google.inject.Guice.createInjector(Guice.java:95)
at org.killbill.commons.skeleton.listeners.GuiceServletContextListener.getInjector(GuiceServletContextListener.java:92)
at com.google.inject.servlet.GuiceServletContextListener.contextInitialized(GuiceServletContextListener.java:45)
at org.killbill.commons.skeleton.listeners.GuiceServletContextListener.contextInitialized(GuiceServletContextListener.java:54)
at org.killbill.billing.server.listeners.KillbillPlatformGuiceListener.initializeGuice(KillbillPlatformGuiceListener.java:130)
at org.killbill.billing.server.listeners.KillbillPlatformGuiceListener.contextInitialized(KillbillPlatformGuiceListener.java:82)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4791)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5285)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:618)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1100)
at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1618)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.io.FileNotFoundException: \C (The system cannot find the file specified)
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.<init>(ZipFile.java:114)
at java.util.zip.ZipFile.<init>(ZipFile.java:131)
at org.killbill.xmlloader.UriAccessor.getInputStreamFromJarFile(UriAccessor.java:75)
at org.killbill.xmlloader.UriAccessor.accessUri(UriAccessor.java:49)
at org.killbill.xmlloader.UriAccessor.accessUri(UriAccessor.java:38)
at org.killbill.xmlloader.XMLLoader.getObjectFromString(XMLLoader.java:48)
at org.killbill.billing.payment.glue.PaymentModule$StateMachineProvider.get(PaymentModule.java:127)
... 82 more

Its trying to load from "/C....", and obviously on Windows, its a wrong path. where could i be missing something?

Pierre-Alexandre Meyer

unread,
Sep 6, 2014, 3:22:59 PM9/6/14
to Praveen Agrawal, killbill...@googlegroups.com
On Sat, Sep 6, 2014 at 1:11 PM, <pka...@gmail.com> wrote:
Caused by: java.io.FileNotFoundException: \C (The system cannot find the file specified)
        at java.util.zip.ZipFile.open(Native Method)
        at java.util.zip.ZipFile.<init>(ZipFile.java:114)
        at java.util.zip.ZipFile.<init>(ZipFile.java:131)
        at org.killbill.xmlloader.UriAccessor.getInputStreamFromJarFile(UriAccessor.java:75)
        at org.killbill.xmlloader.UriAccessor.accessUri(UriAccessor.java:49)
        at org.killbill.xmlloader.UriAccessor.accessUri(UriAccessor.java:38)
        at org.killbill.xmlloader.XMLLoader.getObjectFromString(XMLLoader.java:48)
        at org.killbill.billing.payment.glue.PaymentModule$StateMachineProvider.get(PaymentModule.java:127)
        ... 82 more



Its trying to load from "/C....", and obviously on Windows, its a wrong path. where could i be missing something?

It seems that Resources.getResource(stateMachineConfig).toExternalForm() (https://github.com/killbill/killbill/blob/master/payment/src/main/java/org/killbill/billing/payment/glue/PaymentModule.java) is the culprit. Do you know what's the appropriate way to do this on Windows?

--
Pierre

pka...@gmail.com

unread,
Sep 7, 2014, 3:07:08 AM9/7/14
to killbill...@googlegroups.com, pka...@gmail.com
This portion of code seems to be same as of 0.10.2, and killbill-server-0.10.2 was working good for me. I am wondering if this code is the real issue.

I tried to switch to latest KB for standalone KAUI, as it wasn't quite happy with older KB (you told the KAUI artifacts are relatively latest - compatible to KB 0.11).

BTW, to load a config file from classpath, i generally use:
<ClassName>.class.getClassLoader().getResourceAsStream(<resName>)
which gives an input stream to the config file. This works on Windows and *nix equally well.

Pierre-Alexandre Meyer

unread,
Sep 8, 2014, 3:07:42 PM9/8/14
to Praveen Agrawal, killbill...@googlegroups.com
On Sun, Sep 7, 2014 at 3:07 AM, <pka...@gmail.com> wrote:
This portion of code seems to be same as of 0.10.2, and killbill-server-0.10.2 was working good for me. I am wondering if this code is the real issue.

This code (state machine for payments) was actually introduced as part of 0.11.5.

I've created https://github.com/killbill/killbill/issues/226 for tracking.

--
Pierre

pka...@gmail.com

unread,
Sep 11, 2014, 10:16:24 AM9/11/14
to killbill...@googlegroups.com, pka...@gmail.com
Thank you Pierre.

Is there an automated way to be notified when a bug gets updated/resolved? like 'watching' a bug?

Reply all
Reply to author
Forward
0 new messages