Uploaded image for project: 'ShrinkWrap Resolvers'
  1. ShrinkWrap Resolvers
  2. SHRINKRES-259

Shrinkwrap resolver generates invalid Zips

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major Major
    • 3.0.0-alpha-3, 2.2.5
    • 2.2.0, 2.2.1, 2.2.2, 2.2.3, 2.2.4
    • None
    • None
    • Low

      Affects shrinkwrap-resolver-impl-maven:2.2.0 up to shrinkwrap-resolver-impl-maven:2.2.4

      The class MavenResolvedArtifactImpl.java generates a zip File using the function packageDirectories.

      zipFiles generated by this method contain 1 zipfile entry per file (this is good) but also 1 entry per directory. This means that wildfly will throw a FileNotFoundException like the following:

      14:17:41,203 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-7) MSC000001: Failed to start service jboss.deployment.unit."rdp-pricedata-testing.ear".STRUCTURE: org.jboss.msc.service.StartException in service jboss.deployment.unit."X-Y-Z.ear".STRUCTURE: WFLYSRV0153: Failed to process phase STRUCTURE of deployment "X-Y-Z.ear"
      ...
      Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: WFLYEE0054: Failed to process children for EAR ["/C:/Daten/tools/wildfly-10.1.0.Final/bin/content/X-Y-Z.ear"]
      ...
      Caused by: java.io.FileNotFoundException: C:\Daten\tools\wildfly-10.1.0.Final\standalone\tmp\vfs\deployment\deployment8c1b4b7ccf088d0f\X-Y-other.war-1968e3b71e5fa852\com\sixgroup (The system cannot find the path specified)
      	at java.io.FileOutputStream.open0(Native Method)
      	at java.io.FileOutputStream.open(FileOutputStream.java:270)
      	at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
      	at java.io.FileOutputStream.<init>(FileOutputStream.java:162)
      	at org.jboss.vfs.VFSUtils.unzip(VFSUtils.java:899)
      	at org.jboss.vfs.VFS.mountZipExpanded(VFS.java:504)
      	at org.jboss.vfs.VFS.mountZipExpanded(VFS.java:533)
      	at org.jboss.as.ee.structure.EarStructureProcessor.mount(EarStructureProcessor.java:252)
      	at org.jboss.as.ee.structure.EarStructureProcessor.createResourceRoot(EarStructureProcessor.java:271)
      	at org.jboss.as.ee.structure.EarStructureProcessor.deploy(EarStructureProcessor.java:202)
      	... 6 more
      

      I'd suggest amending the code:

      if (fileEntry.isDirectory()) {
          zipFile.putNextEntry(new ZipEntry(entry));
      }
      

      to:

      if (fileEntry.isDirectory()) {
          continue;
      }
      

              florian.besser Florian Besser (Inactive)
              florian.besser Florian Besser (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: