code: private void findJarFile() throws IOException {
          if (getUseCaches()) {
              synchronized (jarCache) {
                  jarFile = jarCache.get(jarFileURL);
              }
              if (jarFile == null) {
                  JarFile jar = openJarFile();
                  synchronized (jarCache) {
                      jarFile = jarCache.get(jarFileURL);
                      if (jarFile == null) {
                          jarCache.put(jarFileURL, jar);
                          jarFile = jar;
                      } else {
                          jar.close();
                      }
                  }
              }
          } else {
              jarFile = openJarFile();
          }
  
          if (jarFile == null) {
              throw new IOException();
          }
      }
docs: Returns the Jar file referred by this {@code URLConnection}
  
  @throws IOException
  if an IO error occurs while connecting to the resource.