OH 3.4.4 does not (re)start due to java.util.zip.ZipException: Invalid CEN header

  • Platform information:
    • Hardware: AMD64
    • OS: bullseye
    • Java Runtime Environment: openjdk 11.0.21 2023-10-17
    • openHAB version: 3.4.4

After some problems this night I decided to restart my productive system after months of operation. It does not start and raises exception

2023-12-13 07:59:11.785 [ERROR] [Events.Framework                    ] - FrameworkEvent ERROR
java.util.zip.ZipException: Exception in opening zip file: /var/lib/openhab/cache/org.eclipse.osgi/59/0/.cp/lib/geronimo-osgi-locator.jar
	at org.eclipse.osgi.framework.util.SecureAction.getZipFile(SecureAction.java:356) ~[org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.storage.bundlefile.ZipBundleFile.doOpen(ZipBundleFile.java:51) ~[org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.storage.bundlefile.CloseableBundleFile.open(CloseableBundleFile.java:135) ~[org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.storage.bundlefile.CloseableBundleFile.lockOpen(CloseableBundleFile.java:77) ~[org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.storage.bundlefile.CloseableBundleFile.getEntryPaths(CloseableBundleFile.java:293) ~[org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.storage.Storage.listEntryPaths(Storage.java:2095) ~[org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.storage.Storage.listEntryPaths(Storage.java:2044) ~[org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.listLocalResources(ClasspathManager.java:910) ~[org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.internal.loader.ModuleClassLoader.listLocalResources(ModuleClassLoader.java:393) ~[org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.internal.loader.BundleLoader.listResources(BundleLoader.java:861) ~[org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.container.ModuleWiring.listResources(ModuleWiring.java:300) ~[org.eclipse.osgi-3.17.200.jar:?]
	at org.ops4j.pax.web.jsp.TldScanner.scanJars(TldScanner.java:256) ~[?:?]
	at org.ops4j.pax.web.jsp.TldScanner.scan(TldScanner.java:90) ~[?:?]
	at org.ops4j.pax.web.jsp.JasperInitializer.onStartup(JasperInitializer.java:101) ~[?:?]
	at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext$1.call(HttpServiceContext.java:219) ~[?:?]
	at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext$1.call(HttpServiceContext.java:214) ~[?:?]
	at org.ops4j.pax.swissbox.core.ContextClassLoaderUtils.doWithClassLoader(ContextClassLoaderUtils.java:60) ~[?:?]
	at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.lambda$doStart$1(HttpServiceContext.java:213) ~[?:?]
	at java.lang.Iterable.forEach(Iterable.java:75) ~[?:?]
	at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doStart(HttpServiceContext.java:211) ~[?:?]
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73) ~[?:?]
	at org.ops4j.pax.web.service.jetty.internal.JettyServerImpl$1.start(JettyServerImpl.java:327) ~[?:?]
	at org.ops4j.pax.web.service.internal.HttpServiceStarted.registerServlet(HttpServiceStarted.java:255) ~[?:?]
	at org.ops4j.pax.web.service.internal.HttpServiceStarted.registerServlet(HttpServiceStarted.java:395) ~[?:?]
	at org.ops4j.pax.web.service.internal.HttpServiceProxy.registerServlet(HttpServiceProxy.java:504) ~[?:?]
	at org.ops4j.pax.web.extender.whiteboard.internal.element.ServletWebElement.register(ServletWebElement.java:102) ~[?:?]
	at org.ops4j.pax.web.extender.whiteboard.internal.WebApplication.registerWebElement(WebApplication.java:392) ~[?:?]
	at org.ops4j.pax.web.extender.whiteboard.internal.WebApplication.addWebElement(WebApplication.java:188) ~[?:?]
	at org.ops4j.pax.web.extender.whiteboard.internal.tracker.AbstractTracker.addingService(AbstractTracker.java:191) ~[?:?]
	at org.ops4j.pax.web.extender.whiteboard.internal.tracker.AbstractTracker.addingService(AbstractTracker.java:44) ~[?:?]
	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:943) ~[osgi.core-7.0.0.jar:?]
	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:871) ~[osgi.core-7.0.0.jar:?]
	at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256) ~[osgi.core-7.0.0.jar:?]
	at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229) ~[osgi.core-7.0.0.jar:?]
	at org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:903) ~[osgi.core-7.0.0.jar:?]
	at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:120) ~[org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:956) ~[org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234) ~[org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:151) ~[org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:936) ~[org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:873) ~[org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:141) ~[org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:261) ~[org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:495) ~[org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:514) ~[org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:1049) ~[org.eclipse.osgi-3.17.200.jar:?]
	at org.apache.aries.component.dsl.internal.ServiceRegistrationOSGiImpl.lambda$new$1(ServiceRegistrationOSGiImpl.java:53) ~[?:?]
	at org.apache.aries.component.dsl.internal.OSGiImpl.run(OSGiImpl.java:50) ~[?:?]
	at org.apache.aries.component.dsl.OSGi.lambda$null$68(OSGi.java:674) ~[?:?]
	at org.apache.aries.component.dsl.internal.ServiceRegistrationOSGiImpl.getServiceRegistrationOSGiResult(ServiceRegistrationOSGiImpl.java:89) ~[?:?]
	at org.apache.aries.component.dsl.internal.ServiceRegistrationOSGiImpl.lambda$new$0(ServiceRegistrationOSGiImpl.java:43) ~[?:?]
	at org.apache.aries.component.dsl.internal.OSGiImpl.run(OSGiImpl.java:50) ~[?:?]
	at org.apache.aries.component.dsl.OSGi.lambda$flatMap$69(OSGi.java:674) ~[?:?]
        ...
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1840) ~[org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1783) ~[org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1745) ~[org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1667) ~[org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1) ~[org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:345) [org.eclipse.osgi-3.17.200.jar:?]
Caused by: java.util.zip.ZipException: Invalid CEN header (invalid extra data field size for tag: 0xbfef at 55)
	at java.util.zip.ZipFile$Source.zerror(ZipFile.java:1769) ~[?:?]
	at java.util.zip.ZipFile$Source.checkExtraFields(ZipFile.java:1274) ~[?:?]
	at java.util.zip.ZipFile$Source.initCEN(ZipFile.java:1734) ~[?:?]
	at java.util.zip.ZipFile$Source.<init>(ZipFile.java:1463) ~[?:?]
	at java.util.zip.ZipFile$Source.get(ZipFile.java:1426) ~[?:?]
	at java.util.zip.ZipFile$CleanableResource.<init>(ZipFile.java:742) ~[?:?]
	at java.util.zip.ZipFile$CleanableResource.get(ZipFile.java:859) ~[?:?]
	at java.util.zip.ZipFile.<init>(ZipFile.java:257) ~[?:?]
	at java.util.zip.ZipFile.<init>(ZipFile.java:186) ~[?:?]
	at java.util.zip.ZipFile.<init>(ZipFile.java:200) ~[?:?]
	at org.eclipse.osgi.framework.util.SecureAction.getZipFile(SecureAction.java:342) ~[org.eclipse.osgi-3.17.200.jar:?]
	... 232 more

My first assumption was that geronimo-osgi-locator.jar is broken.

To test this I restarted a second openhab system with same base configuration, that was operational for even longer than the first one.

Same behavior, it does not start with the same exception.

What can I do to get the things running again?

It’s fixed in 3.4.5: Release openHAB 3.4.5 · openhab/openhab-distro · GitHub

Thank you. What is the easiest way to do so? apt list --upgradable shows

openhab-addons/stable 4.0.0-1 all [upgradable from: 3.4.4-2]
openhab/stable 4.0.0-1 all [upgradable from: 3.4.4-2]

but I do not want to migrate.


sudo apt install openhab=3.4.5-1

1 Like

Thanks a lot. System are up and running again. For safety reasons U upgraded openhab.-addons as well.

My last problem was that I was not able to find the correct 3.4.5 version, but have learned to get all available versions by

apt-get madison openhab