code: public File getMappingFile(URL url) throws IOException {
          if (componentFiles == null) initFastIndexes("app", "lib", "repository");
          String fileName = FilenameUtils.normalize(url.getFile(), true);
          if( !fileName.endsWith(".jar") ) fileName = fileName + ".jar";
          if( fileName.startsWith("boot/") || fileName.startsWith("boot\\") ){
              fileName = "net.happyonroad/" + FilenameUtils.getName(fileName);
          }else if(fileName.startsWith("lib/") || fileName.startsWith("lib\\")){/* Only 3rd lib file will be put into jar classpath*/
              //正常的组件component url里面肯定不是lib开头；
              // 但是 spring-component-framework的Class-Path指定的那些url被normalize之后却会如此
              fileName  = ComponentUtils.relativePath(fileName);
          }
          File componentFile = componentFiles.get(fileName);
          if( componentFile == null )
          {
              // 当第一次建立的快速索引中没有相应文件时
              // 尝试看lib下后来有没有相应的文件
              componentFile = guessFile(url, "app", "lib", "repository");
              if( componentFile == null )
                  throw new IOException("there is no component named as " + fileName);
          }
          return componentFile;
      }
docs: Get the real file of component url
  @param url the component url
  @return the real file
  @throws IOException