@Override
  public ResourceLookUpEntry[] lookUp(String className, List<LibraryEntity> libraryEntities)
  {
    ArrayList<ResourceLookUpEntry> lookupList = new ArrayList<ResourceLookUpEntry>();


    try
    {
      //(1) search java runtime
      JarFile rtJar = new JarFile(ApplicationSettings.getInstance().getJavaHome() + "\\jre\\lib\\rt.jar");

      final Enumeration<JarEntry> entries = rtJar.entries();
      while (entries.hasMoreElements())
      {
        final JarEntry element = entries.nextElement();
        if (element.getName().endsWith("/" + className + ".class"))
        {
          String fullName = element.getName().replaceAll("/", ".").replace(".class", "");
          lookupList.add(new ResourceLookUpEntry("Java RunTime", fullName));
        }
      }


      //(2) search in given libraries
      if (libraryEntities != null && libraryEntities.size() > 0)
      {
        for (LibraryEntity jarFile : libraryEntities)
        {
          final String[] libNames = jarFile.getLibNames();
          for (String libName : libNames)
          {
            JarFile jar = new JarFile(ApplicationSettings.getInstance().getLibraryBasePath() + libName);

            final Enumeration<JarEntry> libEntries = jar.entries();
            while (libEntries.hasMoreElements())
            {
              final JarEntry element = libEntries.nextElement();
              if (element.getName().endsWith("/" + className + ".class"))
              {
                String fullName = element.getName().replaceAll("/", ".").replace(".class", "");
                lookupList.add(new ResourceLookUpEntry(jarFile.getName(), fullName));
              }
            }

          }
        }
      }

    }
    catch (Exception e)
    {
      e.printStackTrace();
    }

    return lookupList.toArray(new ResourceLookUpEntry[]{});
  }