private void loadManifestAttributes() {
    if (myClassPathManifestAttribute != null) return;
    synchronized (this) {
      try {
        if (myClassPathManifestAttribute != null) return;
        ZipFile zipFile = getZipFile();
        try {
          Attributes manifestAttributes = null;
          ZipEntry entry = zipFile.getEntry(JarFile.MANIFEST_NAME);
          if (entry != null) {
            manifestAttributes = loadManifestAttributes(zipFile.getInputStream(entry));
          }
          if (manifestAttributes == null) {
            manifestAttributes = new Attributes(0);
          }

          myAttributes = getAttributes(manifestAttributes);
          Object attribute = manifestAttributes.get(Attributes.Name.CLASS_PATH);
          myClassPathManifestAttribute = attribute instanceof String ? (String)attribute : NULL_STRING;
        }
        finally {
          releaseZipFile(zipFile);
        }
      }
      catch (IOException io) {
        throw new RuntimeException(io);
      }
    }
  }
private void loadManifestAttributes()