docs: public List<ResourceRef> getJarResources() throws IOException {
          if (jarResources == null) {
              if (logger.isInfoEnabled()) {
                  logger.info("[jarFile] start to found available jar files for rose to scanning...");
              }
              List<ResourceRef> jarResources = new LinkedList<ResourceRef>();
              Resource[] metaInfResources = resourcePatternResolver
                      .getResources("classpath*:/META-INF/");
              for (Resource metaInfResource : metaInfResources) {
                  URL urlObject = metaInfResource.getURL();
                  if (ResourceUtils.isJarURL(urlObject)) {
                      try {
                          String path = URLDecoder.decode(urlObject.getPath(), "UTF-8"); // fix 20%
                          if (path.startsWith("file:")) {
                              path = path.substring("file:".length(), path.lastIndexOf('!'));
                          } else {
                              path = path.substring(0, path.lastIndexOf('!'));
                          }
                          Resource resource = new FileSystemResource(path);
                          if (jarResources.contains(resource)) {
                              if (logger.isDebugEnabled()) {
                                  logger.debug("[jarFile] skip replicated jar resource: " + path);// 在多个 linux环境 下发现有重复,fix it!
                              }
                          } else {
                              ResourceRef ref = ResourceRef.toResourceRef(resource);
                              if (ref.getModifiers() != null) {
                                  jarResources.add(ref);
                                  if (logger.isInfoEnabled()) {
                                      logger.info("[jarFile] add jar resource: " + ref);
                                  }
                              } else {
                                  if (logger.isDebugEnabled()) {
                                      logger.debug("[jarFile] not rose jar resource: " + path);
                                  }
                              }
                          }
                      } catch (Exception e) {
                          logger.error(urlObject, e);
                      }
                  } else {
                      if (logger.isDebugEnabled()) {
                          logger.debug("[jarFile] not rose type(not a jar) " + urlObject);
                      }
                  }
              }
              this.jarResources = jarResources;
              if (logger.isInfoEnabled()) {
                  logger.info("[jarFile] found " + jarResources.size() + " jar files: "
                          + jarResources);
              }
          } else {
              if (logger.isInfoEnabled()) {
                  logger.info("[jarFile] found cached " + jarResources.size() + " jar files: "
                          + jarResources);
              }
          }
          return Collections.unmodifiableList(jarResources);
      }