Exporting a Binding with custom Event to OpenHAB2. [message #1707148] |
Wed, 02 September 2015 15:02 |
Tonis Tiganik Messages: 7 Registered: August 2015 |
Junior Member |
|
|
Hello again. I have finished implementing my binding with ESH. It works well when launched with ESH in Eclipse.
However we would like the binding to work with OpenHAB2 as well, so I have been trying to export it from ESH. Exporting straight from Eclipse(deployable plug-ins and fragments) gives me an error:
A cycle was detected when generating the classpath org.eclipse.smarthome.binding.hmhome_0.8.0.201509021741, org.eclipse.smarthome.config.core_0.8.0.201509021741, org.eclipse.smarthome.core_0.8.0.201509021741, org.eclipse.smarthome.test_0.8.0.201509021741, org.eclipse.smarthome.config.xml_0.8.0.201509021741, org.eclipse.smarthome.config.core_0.8.0.201509021741.
so I have been using mvn package to get the .jar file.
Adding the .jar to OpenHAB2 addons folder makes the binding work (mDNS discovery + creating a socket connection) until our binding needs to send our custom event.
This produces errors like this:
!ENTRY org.eclipse.equinox.ds 4 0 2015-09-02 17:27:17.607
!MESSAGE [SCR] Exception while activating instance org.eclipse.smarthome.core.thing.internal.ThingManager@5189de9c of component org.eclipse.smarthome.core.thing.internal.ThingManager
!STACK 0
java.lang.reflect.InvocationTargetException
at sun.reflect.GeneratedMethodAccessor12.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.eclipse.equinox.internal.ds.model.ServiceComponent.activate(ServiceComponent.java:235)
at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.activate(ServiceComponentProp.java:146)
at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:345)
at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:620)
at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:197)
at org.eclipse.equinox.internal.ds.Resolver.getEligible(Resolver.java:343)
at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged(SCRManager.java:222)
at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:109)
at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:914)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:862)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:801)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:127)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:225)
at org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:464)
at org.eclipse.equinox.internal.ds.InstanceProcess.registerService(InstanceProcess.java:536)
at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:260)
at org.eclipse.equinox.internal.ds.Resolver.buildNewlySatisfied(Resolver.java:473)
at org.eclipse.equinox.internal.ds.Resolver.enableComponents(Resolver.java:217)
at org.eclipse.equinox.internal.ds.SCRManager.performWork(SCRManager.java:816)
at org.eclipse.equinox.internal.ds.SCRManager$QueuedJob.dispatch(SCRManager.java:783)
at org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:89)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NoClassDefFoundError: org/eclipse/smarthome/core/events/Event
at org.eclipse.smarthome.binding.hmhome.internal.WifiModuleHandlerFactory.createHandler(WifiModuleHandlerFactory.java:47)
at org.eclipse.smarthome.core.thing.binding.BaseThingHandlerFactory.registerHandler(BaseThingHandlerFactory.java:103)
at org.eclipse.smarthome.core.thing.internal.ThingManager.registerHandler(ThingManager.java:385)
at org.eclipse.smarthome.core.thing.internal.ThingManager.registerHandler(ThingManager.java:352)
at org.eclipse.smarthome.core.thing.internal.ThingManager.thingAdded(ThingManager.java:281)
at org.eclipse.smarthome.core.thing.internal.ThingRegistryImpl.notifyTrackerAboutAllThingsAdded(ThingRegistryImpl.java:174)
at org.eclipse.smarthome.core.thing.internal.ThingRegistryImpl.addThingTracker(ThingRegistryImpl.java:41)
at org.eclipse.smarthome.core.thing.internal.ThingManager.activate(ThingManager.java:407)
... 27 more
Caused by: java.lang.ClassNotFoundException: org.eclipse.smarthome.core.events.Event cannot be found by org.eclipse.smarthome.binding.hmhome_0.8.0.201509021426
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:432)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:345)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:337)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:160)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 35 more
Root exception:
java.lang.NoClassDefFoundError: org/eclipse/smarthome/core/events/Event
at org.eclipse.smarthome.binding.hmhome.internal.WifiModuleHandlerFactory.createHandler(WifiModuleHandlerFactory.java:47)
at org.eclipse.smarthome.core.thing.binding.BaseThingHandlerFactory.registerHandler(BaseThingHandlerFactory.java:103)
at org.eclipse.smarthome.core.thing.internal.ThingManager.registerHandler(ThingManager.java:385)
at org.eclipse.smarthome.core.thing.internal.ThingManager.registerHandler(ThingManager.java:352)
at org.eclipse.smarthome.core.thing.internal.ThingManager.thingAdded(ThingManager.java:281)
at org.eclipse.smarthome.core.thing.internal.ThingRegistryImpl.notifyTrackerAboutAllThingsAdded(ThingRegistryImpl.java:174)
at org.eclipse.smarthome.core.thing.internal.ThingRegistryImpl.addThingTracker(ThingRegistryImpl.java:41)
at org.eclipse.smarthome.core.thing.internal.ThingManager.activate(ThingManager.java:407)
at sun.reflect.GeneratedMethodAccessor12.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.eclipse.equinox.internal.ds.model.ServiceComponent.activate(ServiceComponent.java:235)
at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.activate(ServiceComponentProp.java:146)
at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:345)
at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:620)
at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:197)
at org.eclipse.equinox.internal.ds.Resolver.getEligible(Resolver.java:343)
at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged(SCRManager.java:222)
at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:109)
at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:914)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:862)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:801)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:127)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:225)
at org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:464)
at org.eclipse.equinox.internal.ds.InstanceProcess.registerService(InstanceProcess.java:536)
at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:260)
at org.eclipse.equinox.internal.ds.Resolver.buildNewlySatisfied(Resolver.java:473)
at org.eclipse.equinox.internal.ds.Resolver.enableComponents(Resolver.java:217)
at org.eclipse.equinox.internal.ds.SCRManager.performWork(SCRManager.java:816)
at org.eclipse.equinox.internal.ds.SCRManager$QueuedJob.dispatch(SCRManager.java:783)
at org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:89)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: org.eclipse.smarthome.core.events.Event cannot be found by org.eclipse.smarthome.binding.hmhome_0.8.0.201509021426
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:432)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:345)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:337)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:160)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 35 more
Does anyone know how to resolve these exceptions so our binding can work with OpenHAB2?
Also, I dont know if this is the result of the same issue or something else: After the first OpenHAB2 launch Thing handler factory is created once, but on subsequent launches the Thing manager goes into a loop, adding and removing my HandlerFactory for ~20 times until stopping with "removed". The NoClassDefFoundError is not visible in the terminal in this case, but I can see them in openhab2/runtime/server/configuration log files.
2015-09-02 17:47:48 [DEBUG] [.c.thing.internal.ThingManager:414 ] - Thing handler factory 'WifiModuleHandlerFactory' added
2015-09-02 17:47:48 [DEBUG] [.c.thing.internal.ThingManager:278 ] - Thing 'hm-home:wifi-module:010c06c192e74812b2' is tracked by ThingManager.
2015-09-02 17:47:48 [DEBUG] [.c.thing.internal.ThingManager:381 ] - Creating handler for thing 'hm-home:wifi-module:010c06c192e74812b2'.
2015-09-02 17:47:48 [DEBUG] [.c.thing.internal.ThingManager:439 ] - Thing handler factory 'WifiModuleHandlerFactory' removed
2015-09-02 17:47:48 [DEBUG] [.c.thing.internal.ThingManager:414 ] - Thing handler factory 'WifiModuleHandlerFactory' added
2015-09-02 17:47:48 [DEBUG] [.c.thing.internal.ThingManager:278 ] - Thing 'hm-home:wifi-module:010c06c192e74812b2' is tracked by ThingManager.
2015-09-02 17:47:48 [DEBUG] [.c.thing.internal.ThingManager:381 ] - Creating handler for thing 'hm-home:wifi-module:010c06c192e74812b2'.
2015-09-02 17:47:48 [DEBUG] [.c.thing.internal.ThingManager:439 ] - Thing handler factory 'WifiModuleHandlerFactory' removed
|
|
|
|
|
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.03056 seconds