I download openhab-4.1.0-SNAPSHOT.zip to Windows 10 machine
Unzip it
Copy my newly created binding to addons
start.bat fresh OH4.
Type log:tail
Add new item
Auto-discovery finds it.
When I add required parameters and try to start it. I got following error:
19:08:39.956 [WARN ] [ommon.WrappedScheduledExecutorService] - Scheduled runnable ended with an exception:
java.lang.NoClassDefFoundError: org/xmlpull/v1/XmlPullParserException
at com.thoughtworks.xstream.XStream.<init>(XStream.java:351) ~[?:?]
at org.openhab.binding.entsoe.internal.client.EntsoeClient.<clinit>(EntsoeClient.java:50) ~[?:?]
at org.openhab.binding.entsoe.internal.price.PriceHandler.getClient(PriceHandler.java:98) ~[?:?]
at org.openhab.binding.entsoe.internal.price.PriceHandler.getService(PriceHandler.java:109) ~[?:?]
at org.openhab.binding.entsoe.internal.price.PriceHandler.handleRefresh(PriceHandler.java:123) ~[?:?]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) ~[?:?]
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) ~[?:?]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
at java.lang.Thread.run(Thread.java:833) ~[?:?]
Caused by: java.lang.ClassNotFoundException: org.xmlpull.v1.XmlPullParserException cannot be found by xstream_1.4.20
at org.eclipse.osgi.internal.loader.BundleLoader.generateException(BundleLoader.java:541) ~[org.eclipse.osgi-3.18.0.jar:?]
at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:536) ~[org.eclipse.osgi-3.18.0.jar:?]
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:416) ~[org.eclipse.osgi-3.18.0.jar:?]
at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:168) ~[org.eclipse.osgi-3.18.0.jar:?]
at java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[?:?]
... 11 more
The documentation says that com.thoughtworks.xstream package should be on the default libraries. Should I define them in pom.xml somehow etc?
Now the next problem is that DTO classes aren’t found. Unit tests work correctly.
How to export DTO classes from bundle? I tried to move classes out of org.openhab.binding.xxx.internal.client.dto.XxxDtoClass to org.openhab.binding.xxx.client.dto.XxxDtoClass with no success.
Caused by: com.thoughtworks.xstream.mapper.CannotResolveClassException: org.openhab.binding.xxx.client.dto.XxxDtoClass
at com.thoughtworks.xstream.mapper.DefaultMapper.realClass(DefaultMapper.java:81) ~[?:?]
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:125) ~[?:?]
at com.thoughtworks.xstream.mapper.DynamicProxyMapper.realClass(DynamicProxyMapper.java:55) ~[?:?]
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:125) ~[?:?]
at com.thoughtworks.xstream.mapper.PackageAliasingMapper.realClass(PackageAliasingMapper.java:88) ~[?:?]
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:125) ~[?:?]
at com.thoughtworks.xstream.mapper.ClassAliasingMapper.realClass(ClassAliasingMapper.java:79) ~[?:?]
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:125) ~[?:?]
at com.thoughtworks.xstream.mapper.ArrayMapper.realClass(ArrayMapper.java:74) ~[?:?]
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:125) ~[?:?]
at com.thoughtworks.xstream.mapper.SecurityMapper.realClass(SecurityMapper.java:71) ~[?:?]
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:125) ~[?:?]
at com.thoughtworks.xstream.mapper.CachingMapper.realClass(CachingMapper.java:47) ~[?:?]
at com.thoughtworks.xstream.core.util.HierarchicalStreams.readClassType(HierarchicalStreams.java:29) ~[?:?]
at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:135) ~[?:?]
at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32) ~[?:?]
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1464) ~[?:?]
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1441) ~[?:?]
at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1321) ~[?:?]
at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1312) ~[?:?]
The error happens in:
package com.thoughtworks.xstream.mapper;
public class DefaultMapper implements Mapper {
@Override
public Class<?> realClass(final String elementName) {
final Class<?> resultingClass = Primitives.primitiveType(elementName);
if (resultingClass != null) {
return resultingClass;
}
try {
boolean initialize = true;
final ClassLoader classLoader;
if (elementName.startsWith(XSTREAM_PACKAGE_ROOT)) {
classLoader = DefaultMapper.class.getClassLoader();
} else {
classLoader = classLoaderReference.getReference();
initialize = elementName.charAt(0) == '[';
}
return Class.forName(elementName, initialize, classLoader);
} catch (final ClassNotFoundException | IllegalArgumentException e) {
throw new CannotResolveClassException(elementName);
}
}
}
So I think this is class loading issue. Aww I love OSGi