java.util.zip.ZipException: Invalid CEN header (invalid zip64 extra data field size) when starting dxp using JDK 11.0.20

Issue

  • Start DXP against JDK 11.0.20, the following error is reported in the log:

    ERROR [main][ModuleFrameworkImpl:417] null
    org.osgi.framework.BundleException: Error occurred installing a bundle.
    at org.eclipse.osgi.storage.Storage.install(Storage.java:688) ~[org.eclipse.osgi.jar:?]
    at org.eclipse.osgi.internal.framework.BundleContextImpl.installBundle(BundleContextImpl.java:146) ~[org.eclipse.osgi.jar:?]
    at com.liferay.portal.bootstrap.ModuleFrameworkImpl._addBundle(ModuleFrameworkImpl.java:414) [com.liferay.portal.bootstrap.jar:?]
    at com.liferay.portal.bootstrap.ModuleFrameworkImpl._installInitialBundle(ModuleFrameworkImpl.java:1047) [com.liferay.portal.bootstrap.jar:?]
    at com.liferay.portal.bootstrap.ModuleFrameworkImpl._deployStaticBundlesFromFile(ModuleFrameworkImpl.java:704) [com.liferay.portal.bootstrap.jar:?]
    at com.liferay.portal.bootstrap.ModuleFrameworkImpl._setUpInitialBundles(ModuleFrameworkImpl.java:1448) [com.liferay.portal.bootstrap.jar:?]
    at com.liferay.portal.bootstrap.ModuleFrameworkImpl.startFramework(ModuleFrameworkImpl.java:276) [com.liferay.portal.bootstrap.jar:?]
    at com.liferay.portal.module.framework.ModuleFrameworkUtil.startFramework(ModuleFrameworkUtil.java:45) [portal-impl.jar:?]
    at com.liferay.portal.spring.context.PortalContextLoaderListener.contextInitialized(PortalContextLoaderListener.java:295) [portal-impl.jar:?]
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
    at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
    at com.liferay.shielded.container.internal.proxy.ContextClassLoaderInvocationHandler.invoke(ContextClassLoaderInvocationHandler.java:43) [com.liferay.shielded.container.impl.jar:?]
    at com.liferay.shielded.container.internal.proxy.EventListenerInvocationHandler.invoke(EventListenerInvocationHandler.java:64) [com.liferay.shielded.container.impl.jar:?]
    at com.sun.proxy.$Proxy6.contextInitialized(Unknown Source) [?:?]
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4492) [catalina.jar:9.0.75]
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4946) [catalina.jar:9.0.75]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina.jar:9.0.75]
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:683) [catalina.jar:9.0.75]
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:658) [catalina.jar:9.0.75]
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:662) [catalina.jar:9.0.75]
    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:689) [catalina.jar:9.0.75]
    at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1888) [catalina.jar:9.0.75]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
    at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) [tomcat-util.jar:9.0.75]
    at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:118) [?:?]
    at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:582) [catalina.jar:9.0.75]
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:472) [catalina.jar:9.0.75]
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1617) [catalina.jar:9.0.75]
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:318) [catalina.jar:9.0.75]
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123) [catalina.jar:9.0.75]
    at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:423) [catalina.jar:9.0.75]
    at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:366) [catalina.jar:9.0.75]
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:898) [catalina.jar:9.0.75]
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:795) [catalina.jar:9.0.75]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina.jar:9.0.75]
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1332) [catalina.jar:9.0.75]
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1322) [catalina.jar:9.0.75]
    at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) [tomcat-util.jar:9.0.75]
    at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140) [?:?]
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:871) [catalina.jar:9.0.75]
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:249) [catalina.jar:9.0.75]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina.jar:9.0.75]
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:428) [catalina.jar:9.0.75]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina.jar:9.0.75]
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:914) [catalina.jar:9.0.75]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina.jar:9.0.75]
    at org.apache.catalina.startup.Catalina.start(Catalina.java:772) [catalina.jar:9.0.75]
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
    at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:347) [bootstrap.jar:9.0.75]
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:478) [bootstrap.jar:9.0.75]
    Caused by: java.util.zip.ZipException: Exception in opening zip file: /opt/liferay/osgi/state/org.eclipse.osgi/10/0/bundleFile
    at org.eclipse.osgi.framework.util.SecureAction.getZipFile(SecureAction.java:317) ~[org.eclipse.osgi.jar:?]
    at org.eclipse.osgi.storage.bundlefile.ZipBundleFile.getZipFile(ZipBundleFile.java:132) ~[org.eclipse.osgi.jar:?]
    at org.eclipse.osgi.storage.bundlefile.ZipBundleFile.open(ZipBundleFile.java:424) ~[org.eclipse.osgi.jar:?]
    at org.eclipse.osgi.storage.Storage.install(Storage.java:652) ~[org.eclipse.osgi.jar:?]
    ... 56 more
    Caused by: java.util.zip.ZipException: Invalid CEN header (invalid zip64 extra data field size)
    at java.util.zip.ZipFile$Source.zerror(ZipFile.java:1752) ~[?:?]
    at java.util.zip.ZipFile$Source.checkExtraFields(ZipFile.java:1268) ~[?:?]
    at java.util.zip.ZipFile$Source.initCEN(ZipFile.java:1717) ~[?:?]
    at java.util.zip.ZipFile$Source.<init>(ZipFile.java:1444) ~[?:?]
    at java.util.zip.ZipFile$Source.get(ZipFile.java:1407) ~[?:?]
    at java.util.zip.ZipFile$CleanableResource.<init>(ZipFile.java:756) ~[?:?]
    at java.util.zip.ZipFile$CleanableResource.get(ZipFile.java:873) ~[?:?]
    at java.util.zip.ZipFile.<init>(ZipFile.java:271) ~[?:?]
    at java.util.zip.ZipFile.<init>(ZipFile.java:200) ~[?:?]
    at java.util.zip.ZipFile.<init>(ZipFile.java:214) ~[?:?]
    at org.eclipse.osgi.framework.util.SecureAction.getZipFile(SecureAction.java:304) ~[org.eclipse.osgi.jar:?]
    at org.eclipse.osgi.storage.bundlefile.ZipBundleFile.getZipFile(ZipBundleFile.java:132) ~[org.eclipse.osgi.jar:?]
    at org.eclipse.osgi.storage.bundlefile.ZipBundleFile.open(ZipBundleFile.java:424) ~[org.eclipse.osgi.jar:?]
    at org.eclipse.osgi.storage.Storage.install(Storage.java:652) ~[org.eclipse.osgi.jar:?]
    ... 56 more

Environment

  • 7.4 DXP U86 + Zulu JDK 11.0.20
  • 7.4 DXP U85 + Zulu JDK 11.0.20
  • 7.4 DXP U50 + Zulu JDK 11.0.20
  • 7.3 DXP U29 + Zulu JDK 11.0.20
  • 7.1 DXP SP8 + Zulu JDK 11.0.20

Resolution

  • If you use Windows, set the -Djdk.util.zip.disableZip64ExtraFieldValidation=true JVM parameter in your <appserver>/bin/setenv.bat file.
  • If you use Linux, set the same parameter in the setenv.sh file
  • If you use Docker:
    • Using docker run, set the -e LIFERAY_JVM_OPTS=-Djdk.util.zip.disableZip64ExtraFieldValidation=truevariable
    • Using compose.yaml, set the below in it:
      liferay:
          image: liferay/dxp:7.4.13.nightly
          environment:
            LIFERAY_JVM_OPTS: "-Djdk.util.zip.disableZip64ExtraFieldValidation=true"

Additional Information

  • This error is due to the latest change in JDK 11.0.20(Release Note)

    • core-libs/java.util.jar
       Improved ZIP64 Extra Field Validation(JDK-8302483 (not public))

      java.util.zip.ZipFile has been updated to provide additional validation of ZIP64 extra fields when opening a ZIP file. This validation may be disabled by setting the system property jdk.util.zip.disableZip64ExtraFieldValidation to true

 

这篇文章有帮助吗?
6 人中有 4 人觉得有帮助