@Override protected void handleURL(URL url, final Set<String> classes, final Set<URL> urls) { try { final VirtualFile archive = VFS.getRoot(url.toURI()); archive.visit( new VirtualFileVisitor() { public VisitorAttributes getAttributes() { return VisitorAttributes.RECURSE_LEAVES_ONLY; } public void visit(VirtualFile vf) { try { String name = getRelativePath(archive, vf); URL url = vf.toURL(); handle(name, url, classes, urls); } catch (Exception e) { throw new RuntimeException(e); } } }); } catch (Exception e) { throw new RuntimeException("Error handling url " + url, e); } }