Org.apache.felix.cm cannot load configuration

After update to 4.1.1 and starting OH there are some errors in the openhab.log but the system started.

024-01-13 17:27:47.673 [ERROR] [Events.Framework                    ] - FrameworkEvent ERROR
java.util.zip.ZipException: Exception in opening zip file: C:\openhab2\userdata\cache\org.eclipse.osgi\63\0\.cp\lib\geronimo-osgi-locator.jar
	at org.eclipse.osgi.framework.util.SecureAction.getZipFile(SecureAction.java:356) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.storage.bundlefile.ZipBundleFile.doOpen(ZipBundleFile.java:51) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.storage.bundlefile.CloseableBundleFile.internalOpen(CloseableBundleFile.java:140) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.storage.bundlefile.CloseableBundleFile.lockOpen(CloseableBundleFile.java:78) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.storage.bundlefile.CloseableBundleFile.getEntry(CloseableBundleFile.java:274) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.internal.loader.classpath.ClasspathEntry.loadManifest(ClasspathEntry.java:230) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.internal.loader.classpath.ClasspathEntry.<init>(ClasspathEntry.java:77) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.internal.loader.ModuleClassLoader.createClassPathEntry(ModuleClassLoader.java:267) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.createClassPathEntry(ClasspathManager.java:343) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.getClasspath(ClasspathManager.java:295) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.addStandardClassPathEntry(ClasspathManager.java:213) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.addClassPathEntry(ClasspathManager.java:205) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findClassPathEntry(ClasspathManager.java:188) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.buildClasspath(ClasspathManager.java:166) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.<init>(ClasspathManager.java:94) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.internal.loader.EquinoxClassLoader.<init>(EquinoxClassLoader.java:54) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.internal.loader.BundleLoader.createClassLoaderPrivledged(BundleLoader.java:345) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.internal.loader.BundleLoader.getModuleClassLoader(BundleLoader.java:262) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.internal.loader.BundleLoader.findEntries(BundleLoader.java:888) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.container.ModuleWiring.findEntries(ModuleWiring.java:285) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.storage.ManifestLocalization.findResource(ManifestLocalization.java:234) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.storage.ManifestLocalization.lookupResourceBundle(ManifestLocalization.java:165) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.storage.ManifestLocalization.getResourceBundle(ManifestLocalization.java:136) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.storage.ManifestLocalization.getHeaders(ManifestLocalization.java:78) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.storage.BundleInfo$Generation.getHeaders(BundleInfo.java:190) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.internal.framework.EquinoxBundle.privGetHeaders(EquinoxBundle.java:520) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.internal.framework.EquinoxBundle.getHeaders(EquinoxBundle.java:515) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.internal.framework.EquinoxBundle.getHeaders(EquinoxBundle.java:509) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.apache.felix.metatype.internal.MetaTypeServiceImpl.getMetaTypeInformation(MetaTypeServiceImpl.java:129) ~[?:?]
	at org.apache.karaf.config.core.impl.MetaServiceCaller.lambda$getPidsWithMetaInfo$0(MetaServiceCaller.java:56) ~[?:?]
	at org.apache.karaf.config.core.impl.MetaServiceCaller.withMetaTypeService(MetaServiceCaller.java:42) ~[?:?]
	at org.apache.karaf.config.core.impl.MetaServiceCaller.getPidsWithMetaInfo(MetaServiceCaller.java:51) ~[?:?]
	at org.apache.karaf.config.command.completers.MetaCompleter.updateMeta(MetaCompleter.java:78) ~[?:?]
	at org.apache.karaf.config.command.completers.MetaCompleter.init(MetaCompleter.java:48) ~[?:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?]
	at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]
	at org.apache.karaf.shell.impl.action.command.ManagerImpl.instantiate(ManagerImpl.java:103) ~[?:?]
	at org.apache.karaf.shell.impl.action.command.ManagerImpl.instantiate(ManagerImpl.java:60) ~[?:?]
	at org.apache.karaf.shell.impl.action.command.ManagerImpl.register(ManagerImpl.java:151) ~[?:?]
	at org.apache.karaf.shell.impl.action.osgi.CommandExtension.updateState(CommandExtension.java:168) ~[?:?]
	at org.apache.karaf.shell.impl.action.osgi.CommandExtension.start(CommandExtension.java:113) ~[?:?]
	at org.apache.felix.utils.extender.AbstractExtender.createExtension(AbstractExtender.java:254) ~[?:?]
	at org.apache.felix.utils.extender.AbstractExtender.modifiedBundle(AbstractExtender.java:227) ~[?:?]
	at org.apache.felix.utils.extender.AbstractExtender.addingBundle(AbstractExtender.java:187) ~[?:?]
	at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:475) ~[osgi.core-8.0.0.jar:?]
	at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:420) ~[osgi.core-8.0.0.jar:?]
	at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256) ~[osgi.core-8.0.0.jar:?]
	at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:183) ~[osgi.core-8.0.0.jar:?]
	at org.osgi.util.tracker.BundleTracker.open(BundleTracker.java:159) ~[osgi.core-8.0.0.jar:?]
	at org.apache.felix.utils.extender.AbstractExtender.startTracking(AbstractExtender.java:150) ~[?:?]
	at org.apache.felix.utils.extender.AbstractExtender.doStart(AbstractExtender.java:142) ~[?:?]
	at org.apache.felix.utils.extender.AbstractExtender.start(AbstractExtender.java:114) ~[?:?]
	at org.apache.karaf.shell.impl.console.osgi.Activator.start(Activator.java:114) ~[?:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:818) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:1) ~[org.eclipse.osgi-3.18.0.jar:?]
	at java.security.AccessController.doPrivileged(AccessController.java:569) ~[?:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:810) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:767) [org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1032) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:371) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.container.Module.doStart(Module.java:605) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.container.Module.start(Module.java:468) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:513) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.container.ModuleContainer.start(ModuleContainer.java:888) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.container.ModuleContainer.applyDelta(ModuleContainer.java:879) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.container.ModuleContainer.resolveAndApply(ModuleContainer.java:560) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.container.ModuleContainer.resolve(ModuleContainer.java:503) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.container.ModuleContainer.refresh(ModuleContainer.java:1139) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerWiring.dispatchEvent(ModuleContainer.java:1520) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerWiring.dispatchEvent(ModuleContainer.java:1) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234) [org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:345) [org.eclipse.osgi-3.18.0.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:1762) ~[?:?]
	at java.util.zip.ZipFile$Source.checkExtraFields(ZipFile.java:1282) ~[?:?]
	at java.util.zip.ZipFile$Source.checkAndAddEntry(ZipFile.java:1229) ~[?:?]
	at java.util.zip.ZipFile$Source.initCEN(ZipFile.java:1701) ~[?:?]
	at java.util.zip.ZipFile$Source.<init>(ZipFile.java:1479) ~[?:?]
	at java.util.zip.ZipFile$Source.get(ZipFile.java:1441) ~[?:?]
	at java.util.zip.ZipFile$CleanableResource.<init>(ZipFile.java:718) ~[?:?]
	at java.util.zip.ZipFile.<init>(ZipFile.java:252) ~[?:?]
	at java.util.zip.ZipFile.<init>(ZipFile.java:181) ~[?:?]
	at java.util.zip.ZipFile.<init>(ZipFile.java:195) ~[?:?]
	at org.eclipse.osgi.framework.util.SecureAction.getZipFile(SecureAction.java:342) ~[org.eclipse.osgi-3.18.0.jar:?]
	... 73 more
2024-01-13 17:27:47.934 [ERROR] [Events.Framework                    ] - FrameworkEvent ERROR
java.util.zip.ZipException: Exception in opening zip file: C:\openhab2\userdata\cache\org.eclipse.osgi\63\0\.cp\lib\geronimo-osgi-locator.jar
	at org.eclipse.osgi.framework.util.SecureAction.getZipFile(SecureAction.java:356) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.storage.bundlefile.ZipBundleFile.doOpen(ZipBundleFile.java:51) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.storage.bundlefile.CloseableBundleFile.internalOpen(CloseableBundleFile.java:140) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.storage.bundlefile.CloseableBundleFile.lockOpen(CloseableBundleFile.java:78) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.storage.bundlefile.CloseableBundleFile.getEntry(CloseableBundleFile.java:274) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.storage.bundlefile.BundleFile.getResourceURL(BundleFile.java:142) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.internal.loader.classpath.ClasspathEntry.findResource(ClasspathEntry.java:213) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalResourceImpl(ClasspathManager.java:421) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalResourceImpl(ClasspathManager.java:401) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalResource(ClasspathManager.java:372) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalResource(ModuleClassLoader.java:327) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.internal.loader.BundleLoader.findLocalResource(BundleLoader.java:911) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.internal.loader.BundleLoader.findResource(BundleLoader.java:693) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.internal.loader.ModuleClassLoader.getResource(ModuleClassLoader.java:205) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.internal.framework.EquinoxBundle.getResource(EquinoxBundle.java:590) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.apache.servicemix.specs.activation.Activator.register(Activator.java:58) ~[org.apache.servicemix.specs.activation-api-1.2.1-1.2.1_3.jar:1.2.1_3]
	at org.apache.servicemix.specs.locator.Activator.start(Activator.java:70) ~[org.apache.servicemix.specs.activation-api-1.2.1-1.2.1_3.jar:1.2.1_3]
	at org.apache.servicemix.specs.activation.Activator.start(Activator.java:46) ~[org.apache.servicemix.specs.activation-api-1.2.1-1.2.1_3.jar:1.2.1_3]
	at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:818) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:1) ~[org.eclipse.osgi-3.18.0.jar:?]
	at java.security.AccessController.doPrivileged(AccessController.java:569) ~[?:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:810) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:767) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1032) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:371) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.container.Module.doStart(Module.java:605) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.container.Module.start(Module.java:468) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:445) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:464) ~[org.eclipse.osgi-3.18.0.jar:?]
	at org.apache.karaf.features.internal.service.BundleInstallSupportImpl.startBundle(BundleInstallSupportImpl.java:165) ~[?:?]
	at org.apache.karaf.features.internal.service.FeaturesServiceImpl.startBundle(FeaturesServiceImpl.java:1160) ~[?:?]
	at org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:1041) ~[?:?]
	at org.apache.karaf.features.internal.service.FeaturesServiceImpl.doProvision(FeaturesServiceImpl.java:1069) ~[?:?]
	at org.apache.karaf.features.internal.service.FeaturesServiceImpl.lambda$doProvisionInThread$13(FeaturesServiceImpl.java:1004) ~[?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
	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:840) ~[?:?]
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:1762) ~[?:?]
	at java.util.zip.ZipFile$Source.checkExtraFields(ZipFile.java:1282) ~[?:?]
	at java.util.zip.ZipFile$Source.checkAndAddEntry(ZipFile.java:1229) ~[?:?]
	at java.util.zip.ZipFile$Source.initCEN(ZipFile.java:1701) ~[?:?]
	at java.util.zip.ZipFile$Source.<init>(ZipFile.java:1479) ~[?:?]
	at java.util.zip.ZipFile$Source.get(ZipFile.java:1441) ~[?:?]
	at java.util.zip.ZipFile$CleanableResource.<init>(ZipFile.java:718) ~[?:?]
	at java.util.zip.ZipFile.<init>(ZipFile.java:252) ~[?:?]
	at java.util.zip.ZipFile.<init>(ZipFile.java:181) ~[?:?]
	at java.util.zip.ZipFile.<init>(ZipFile.java:195) ~[?:?]
	at org.eclipse.osgi.framework.util.SecureAction.getZipFile(SecureAction.java:342) ~[org.eclipse.osgi-3.18.0.jar:?]
	... 37 more

I have seen more errors but have no more time to further investigate right now. I will recheck later…

If you run openHAB as a Windows service it could be that it does not set the environment variable jdk.util.zip.disableZip64ExtraFieldValidation=true which is normally done in setenv.bat, see:

That environment variable normally disables the validation, see also:

I did not see the PATHs set.
So you suggest, running setenv.bat once?

Hi @fuetti!

After reading the Windows docs I think there may be a openHAB-wrapper.conf where the parameter needs to be added to the Java parameters section:

# Java Parameters
wrapper.java.additional.1=-Dkaraf.home="%KARAF_HOME%"
wrapper.java.additional.2=-Dkaraf.base="%KARAF_BASE%"
wrapper.java.additional.3=-Dkaraf.data="%KARAF_DATA%"
wrapper.java.additional.4=-Dkaraf.etc="%KARAF_ETC%"
wrapper.java.additional.5=-Dcom.sun.management.jmxremote
wrapper.java.additional.6=-Dkaraf.startLocalConsole=false
wrapper.java.additional.7=-Dkaraf.startRemoteShell=true
wrapper.java.additional.8=-Dopenhab.home="%OPENHAB_HOME%"
wrapper.java.additional.9=-Dopenhab.conf="%OPENHAB_HOME%\conf"
wrapper.java.additional.10=-Dopenhab.runtime="%OPENHAB_HOME%\runtime"
wrapper.java.additional.11=-Dopenhab.userdata="%OPENHAB_HOME%\userdata"
wrapper.java.additional.12=-Dopenhab.logdir="%OPENHAB_USERDATA%\logs"
wrapper.java.additional.13=-Dfelix.cm.dir="%OPENHAB_HOME%\userdata\config"
wrapper.java.additional.14=-Dorg.osgi.service.http.port=8080
wrapper.java.additional.15=-Dorg.osgi.service.http.port.secure=8443
wrapper.java.additional.16=-Djava.util.logging.config.file="%KARAF_ETC%\java.util.logging.properties"
wrapper.java.additional.17=-Dkaraf.logs="%OPENHAB_LOGDIR%"
wrapper.java.additional.18=-Dfile.encoding=UTF-8
wrapper.java.maxmemory=512

So if it looks like this add a line like this:

wrapper.java.additional.19=-Djdk.util.zip.disableZip64ExtraFieldValidation=true

and it should hopefully be fixed. :slightly_smiling_face: