code: public static boolean coreExpandArchive(String sourcePath, String targetPath) throws IOException {
          ZipArchiveInputStream in = null;
          OutputStream out = null;
  
          try {
  
              // make sure we're working with absolute canonical paths
              File source = new File(sourcePath).getCanonicalFile();
              File target = new File(targetPath).getCanonicalFile();
  
              // open the archive
              in = new ZipArchiveInputStream(getInputStream(source));
  
              // expand all entries of the archive
              for (ZipArchiveEntry entry = in.getNextZipEntry(); entry != null; entry = in.getNextZipEntry()) {
  
                  // get the pathname of the entry (this will be a relative path)
                  String outFilename = entry.getName();
  
                  // construct the absolute path of where this entry will be expanded
                  String targetPlusOutFile = target.getPath() + File.separator + outFilename;
  
                  File targetFile = new File(targetPlusOutFile);
                  char ending = outFilename.charAt(outFilename.length() - 1);
  
                  if (ending == '/' || ending == '\\') {
                      fileMkDirs(targetFile);
                      if (helper != null) {
                          helper.setPermissions(targetFile, entry.getUnixMode());
                      }
                      continue;
                  } else {
                      fileMkDirs(targetFile.getParentFile());
                  }
  
                  // expand the entry
                  out = getOutputStream(targetFile);
                  byte[] buf = new byte[1024];
                  int len;
                  while ((len = in.read(buf)) > 0) {
                      out.write(buf, 0, len);
                  }
  
                  // Close the streams
                  out.close();
  
                  if (helper != null) {
                      helper.setPermissions(targetFile, entry.getUnixMode());
                  }
  
                  out = null;
              }
              in.close();
              in = null;
  
              return true;
  
          } catch (IOException e) {
              throw e;
          } finally {
              // try to close any open files
              tryToClose(out);
              tryToClose(in);
          }
      }
docs: The core portion of the archive expander code was refactored so that in this
  standalone class/jar we can output to System.err but internal Liberty callers
  can call the proper FFDC routines.