Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add new constructors to scan only selected files / directories / classloaders #77

Closed
jrb0001 opened this issue Sep 9, 2016 · 11 comments

Comments

@jrb0001
Copy link

jrb0001 commented Sep 9, 2016

These constructors would be useful to scan only a few jars / directories in case you do not want to modify nor scan the current classpath (eg in a plugin system):

public FastClasspathScanner(File... files);
public FastClasspathScanner(File[] files, String... scanSpec);
public FastClasspathScanner(ClassLoader... classloaders);
public FastClasspathScanner(ClassLoader[] classloaders, String... scanSpec);

Only the given classloaders / files / directories should be scanned. Parent classloaders, all other classloaders and "java.class.path" should be ignored.

@jrb0001
Copy link
Author

jrb0001 commented Sep 9, 2016

I am currently using this code to simulate the behaviour of the constructors accepting ClassLoaders:

FastClasspathScanner scanner = new FastClasspathScanner().verbose();

try {
    Method getScanSpec = FastClasspathScanner.class.getDeclaredMethod("getScanSpec");
    getScanSpec.setAccessible(true);
    ScanSpec spec = (ScanSpec) getScanSpec.invoke(scanner);
    Field classLoaders = ScanSpec.class.getDeclaredField("classLoaders");
    classLoaders.setAccessible(true);
    classLoaders.set(spec, Arrays.asList(loaders));
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException | NoSuchFieldException ex) {
    throw new RuntimeException(ex);
}

String oldClassPath = System.clearProperty("java.class.path");
scanner.scan();
System.setProperty("java.class.path", oldClassPath);

It works but using reflection for that task is ugly.

@lukehutch
Copy link
Member

Yeah, you don't want to do the reflection thing :-)

You can already limit scanning to specific files/dirs by joining the file paths into a standard-format path string using File.pathSeparatorChar as a delimiter, then calling FastClasspathScanner.overrideClasspath(classpathStr). If you do this, you don't need to clear java.class.path, this will override all other classpath finding methods.

I just added a couple of methods for adding a ClassLoader, or replacing all ClassLoaders:

https://github.com/lukehutch/fast-classpath-scanner/wiki/4.-Working-with-nonstandard-ClassLoaders

This is a niche use case though, so I'm curious, what are you doing that requires this? Are your ClassLoaders not visible anywhere in the current thread (i.e. are you doing some sort of dynamic classloading that does not use the current thread's classloader)?

@lukehutch
Copy link
Member

Please test the git head revision, and let me know if this solves your problem. If so, this will be in the next release.

@jrb0001
Copy link
Author

jrb0001 commented Sep 9, 2016

Much better but I still need to clear "java.class.path" before starting the scan (compare the outputs below). I think it's because of ClasspathFinder line 151. It should be skipped if FastClasspathScanner#overrideClassLoaders was called. Another improvement would be to return the FastClasspathScanner in the new methods to allow chaining of calls.

My use case is a (simple) plugin system where all plugin archives have to be separated to avoid dependency conflicts.

Log with System.clearProperty("java.class.path"):

2016-09-09T20:53+02 FastClasspathScanner    FastClasspathScanner version 2.0.4-SNAPSHOT
2016-09-09T20:53+02 FastClasspathScanner    Parsing scan spec
2016-09-09T20:53+02 FastClasspathScanner    -- Whitelisted relative path prefixes:  []
2016-09-09T20:53+02 FastClasspathScanner    -- Blacklisted relative path prefixes:  [sun/, javax/, java/]
2016-09-09T20:53+02 FastClasspathScanner    -- Finding ClassLoaders (took 0.000676 sec)
2016-09-09T20:53+02 FastClasspathScanner    ---- Found ClassLoader sun.misc.Launcher$ExtClassLoader@3d494fbf
2016-09-09T20:53+02 FastClasspathScanner    ---- Found ClassLoader sun.misc.Launcher$AppClassLoader@232204a1
2016-09-09T20:53+02 FastClasspathScanner    Finding classpath entries
2016-09-09T20:53+02 FastClasspathScanner    -- ClassLoaderHandlers loaded:
2016-09-09T20:53+02 FastClasspathScanner    ---- io.github.lukehutch.fastclasspathscanner.classloaderhandler.URLClassLoaderHandler
2016-09-09T20:53+02 FastClasspathScanner    ---- io.github.lukehutch.fastclasspathscanner.classloaderhandler.EquinoxClassLoaderHandler
2016-09-09T20:53+02 FastClasspathScanner    ---- io.github.lukehutch.fastclasspathscanner.classloaderhandler.JBossClassLoaderHandler
2016-09-09T20:53+02 FastClasspathScanner    ---- io.github.lukehutch.fastclasspathscanner.classloaderhandler.WeblogicClassLoaderHandler
2016-09-09T20:53+02 FastClasspathScanner    -- Finding classpath elements in ClassLoader java.net.URLClassLoader@300ffa5d
2016-09-09T20:53+02 FastClasspathScanner    ---- Adding classpath element: file:/path/to/loader/../plugin/target/plugin-1.0-SNAPSHOT.jar
2016-09-09T20:53+02 FastClasspathScanner    -- Getting classpath entries from java.class.path
2016-09-09T20:53+02 FastClasspathScanner    -- Scanning jarfile /path/to/plugin/target/plugin-1.0-SNAPSHOT.jar (took 0.002928 sec)
2016-09-09T20:53+02 FastClasspathScanner    ---- Found whitelisted file in jarfile: META-INF/MANIFEST.MF
2016-09-09T20:53+02 FastClasspathScanner    ---- Found whitelisted file in jarfile: plugin/TestPluginB.class
2016-09-09T20:53+02 FastClasspathScanner    ---- Found whitelisted file in jarfile: plugin/TestPluginA.class
2016-09-09T20:53+02 FastClasspathScanner    ---- Found whitelisted file in jarfile: plugin/TestPluginC.class
2016-09-09T20:53+02 FastClasspathScanner    ---- Found whitelisted file in jarfile: META-INF/maven/group/plugin/pom.xml
2016-09-09T20:53+02 FastClasspathScanner    ---- Found whitelisted file in jarfile: META-INF/maven/group/plugin/pom.properties
2016-09-09T20:53+02 FastClasspathScanner    Classpath element order:
2016-09-09T20:53+02 FastClasspathScanner    -- 0: /path/to/plugin/target/plugin-1.0-SNAPSHOT.jar
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile jar:/path/to/plugin/target/plugin-1.0-SNAPSHOT.jar!plugin/TestPluginB.class (took 0.001724 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class plugin.TestPluginB
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Interfaces: api.Plugin
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile jar:/path/to/plugin/target/plugin-1.0-SNAPSHOT.jar!plugin/TestPluginA.class (took 0.000201 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class plugin.TestPluginA
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Interfaces: api.Plugin
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile jar:/path/to/plugin/target/plugin-1.0-SNAPSHOT.jar!plugin/TestPluginC.class (took 0.000208 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class plugin.TestPluginC
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Interfaces: api.Plugin
2016-09-09T20:53+02 FastClasspathScanner    Building class graph (took 0.001865 sec)
2016-09-09T20:53+02 FastClasspathScanner    Completed scan (took 0.017632 sec)

Log without System.clearProperty("java.class.path"):

2016-09-09T20:53+02 FastClasspathScanner    FastClasspathScanner version 2.0.4-SNAPSHOT
2016-09-09T20:53+02 FastClasspathScanner    Parsing scan spec
2016-09-09T20:53+02 FastClasspathScanner    -- Whitelisted relative path prefixes:  []
2016-09-09T20:53+02 FastClasspathScanner    -- Blacklisted relative path prefixes:  [sun/, javax/, java/]
2016-09-09T20:53+02 FastClasspathScanner    -- Finding ClassLoaders (took 0.000634 sec)
2016-09-09T20:53+02 FastClasspathScanner    ---- Found ClassLoader sun.misc.Launcher$ExtClassLoader@b4c966a
2016-09-09T20:53+02 FastClasspathScanner    ---- Found ClassLoader sun.misc.Launcher$AppClassLoader@232204a1
2016-09-09T20:53+02 FastClasspathScanner    Finding classpath entries
2016-09-09T20:53+02 FastClasspathScanner    -- ClassLoaderHandlers loaded:
2016-09-09T20:53+02 FastClasspathScanner    ---- io.github.lukehutch.fastclasspathscanner.classloaderhandler.URLClassLoaderHandler
2016-09-09T20:53+02 FastClasspathScanner    ---- io.github.lukehutch.fastclasspathscanner.classloaderhandler.EquinoxClassLoaderHandler
2016-09-09T20:53+02 FastClasspathScanner    ---- io.github.lukehutch.fastclasspathscanner.classloaderhandler.JBossClassLoaderHandler
2016-09-09T20:53+02 FastClasspathScanner    ---- io.github.lukehutch.fastclasspathscanner.classloaderhandler.WeblogicClassLoaderHandler
2016-09-09T20:53+02 FastClasspathScanner    -- Finding classpath elements in ClassLoader java.net.URLClassLoader@9807454
2016-09-09T20:53+02 FastClasspathScanner    ---- Adding classpath element: file:/path/to/loader/../plugin/target/plugin-1.0-SNAPSHOT.jar
2016-09-09T20:53+02 FastClasspathScanner    -- Getting classpath entries from java.class.path
2016-09-09T20:53+02 FastClasspathScanner    ---- Adding classpath element: /path/to/loader/target/classes
2016-09-09T20:53+02 FastClasspathScanner    ---- Adding classpath element: /path/to/fast-classpath-scanner/target/classes
2016-09-09T20:53+02 FastClasspathScanner    ---- Adding classpath element: /path/to/api/target/classes
2016-09-09T20:53+02 FastClasspathScanner    -- Scanning directory /path/to/loader/target/classes (took 0.002416 sec)
2016-09-09T20:53+02 FastClasspathScanner    ---- Scanning directory: /path/to/loader/target/classes (took 0.001219 sec)
2016-09-09T20:53+02 FastClasspathScanner    ------ Scanning directory: /path/to/loader/target/classes/loader (took 0.001051 sec)
2016-09-09T20:53+02 FastClasspathScanner    ------ Found whitelisted file: loader/Launcher.class
2016-09-09T20:53+02 FastClasspathScanner    ---- Found whitelisted file: .netbeans_automatic_build
2016-09-09T20:53+02 FastClasspathScanner    -- Scanning jarfile /path/to/plugin/target/plugin-1.0-SNAPSHOT.jar (took 0.002647 sec)
2016-09-09T20:53+02 FastClasspathScanner    ---- Found whitelisted file in jarfile: META-INF/MANIFEST.MF
2016-09-09T20:53+02 FastClasspathScanner    ---- Found whitelisted file in jarfile: plugin/TestPluginB.class
2016-09-09T20:53+02 FastClasspathScanner    ---- Found whitelisted file in jarfile: plugin/TestPluginA.class
2016-09-09T20:53+02 FastClasspathScanner    ---- Found whitelisted file in jarfile: plugin/TestPluginC.class
2016-09-09T20:53+02 FastClasspathScanner    ---- Found whitelisted file in jarfile: META-INF/maven/group/plugin/pom.xml
2016-09-09T20:53+02 FastClasspathScanner    ---- Found whitelisted file in jarfile: META-INF/maven/group/plugin/pom.properties
2016-09-09T20:53+02 FastClasspathScanner    -- Scanning directory /path/to/api/target/classes (took 0.002416 sec)
2016-09-09T20:53+02 FastClasspathScanner    ---- Scanning directory: /path/to/api/target/classes (took 0.001221 sec)
2016-09-09T20:53+02 FastClasspathScanner    ------ Scanning directory: /path/to/api/target/classes/api (took 0.001056 sec)
2016-09-09T20:53+02 FastClasspathScanner    ------ Found whitelisted file: api/Plugin.class
2016-09-09T20:53+02 FastClasspathScanner    ---- Found whitelisted file: .netbeans_automatic_build
2016-09-09T20:53+02 FastClasspathScanner    -- Scanning directory /path/to/fast-classpath-scanner/target/classes (took 0.012979 sec)
2016-09-09T20:53+02 FastClasspathScanner    ---- Scanning directory: /path/to/fast-classpath-scanner/target/classes (took 0.011975 sec)
2016-09-09T20:53+02 FastClasspathScanner    ------ Scanning directory: /path/to/fast-classpath-scanner/target/classes/io (took 0.011819 sec)
2016-09-09T20:53+02 FastClasspathScanner    -------- Scanning directory: /path/to/fast-classpath-scanner/target/classes/io/github (took 0.011692 sec)
2016-09-09T20:53+02 FastClasspathScanner    ---------- Scanning directory: /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch (took 0.011486 sec)
2016-09-09T20:53+02 FastClasspathScanner    ------------ Scanning directory: /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner (took 0.011326 sec)
2016-09-09T20:53+02 FastClasspathScanner    -------------- Scanning directory: /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/matchprocessor
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/matchprocessor/FileMatchContentsProcessor.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/matchprocessor/ImplementingClassMatchProcessor.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/matchprocessor/FileMatchProcessor.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/matchprocessor/FileMatchProcessorWithContext.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/matchprocessor/MethodAnnotationMatchProcessor.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/matchprocessor/SubinterfaceMatchProcessor.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/matchprocessor/ClassAnnotationMatchProcessor.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/matchprocessor/SubclassMatchProcessor.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/matchprocessor/StaticFinalFieldMatchProcessor.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/matchprocessor/ClassMatchProcessor.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/matchprocessor/FileMatchContentsProcessorWithContext.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Scanning directory: /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$9.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/ClassGraphBuilder.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/ClasspathElementZip.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$CallerResolver.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$2.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/ClassInfo$RelType.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/Scanner$2.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$1.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/ScanResult.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$3.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$14.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$16.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/ClasspathRelativePath.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$11.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$6.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/ClasspathElement$1.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/ClassInfo$1.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/ClasspathElement$ClasspathResource$ClasspathResourceInZipFile.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/ClassInfoUnlinked.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$ClassMatcher.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/ClassfileBinaryParser.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/ClasspathElement$ClasspathResource$ClasspathResourceInDir.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$4.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$8.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/ClasspathElementDir.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$5.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/ClasspathFinder.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/Scanner$ClassfileParserChunk.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$FilePathTester.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$15.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/ClassInfo.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$18.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$17.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$ScanSpecPathMatch.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/Scanner$1.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$FilePathTesterAndMatchProcessorWrapper.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/ClassInfo$ClassType.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$13.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/Scanner$3.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/ClasspathRelativePathToElementMap.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$FileMatchProcessorWrapper.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/ClasspathElement.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$7.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/Scanner.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/ClasspathElement$ClasspathResource.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$10.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$12.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Scanning directory: /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/utils
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/utils/NestedJarHandler$2.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/utils/MultiMapKeyToList.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/utils/NestedJarHandler.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/utils/SingletonMap.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/utils/WorkQueue$1.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/utils/JarUtils.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/utils/MultiMapKeyToSet.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/utils/Recycler.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/utils/ReflectionUtils.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/utils/AutoCloseableExecutorService.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/utils/LogNode.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/utils/FastPathResolver.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/utils/SimpleThreadFactory.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/utils/AdditionOrderedSet.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/utils/VersionFinder.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/utils/WorkQueue$WorkUnitProcessor.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/utils/SingletonMap$1.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/utils/FastManifestParser.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/utils/NestedJarHandler$1.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/utils/WorkQueue.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/utils/Join.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/utils/SingletonMap$SingletonHolder.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/utils/InterruptionChecker.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/utils/NestedJarHandler$1$1.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Scanning directory: /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/classloaderhandler
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/classloaderhandler/ClassLoaderHandler.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/classloaderhandler/URLClassLoaderHandler.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/classloaderhandler/WeblogicClassLoaderHandler.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/classloaderhandler/EquinoxClassLoaderHandler.class
2016-09-09T20:53+02 FastClasspathScanner    -------------- Found whitelisted file: io/github/lukehutch/fastclasspathscanner/classloaderhandler/JBossClassLoaderHandler.class
2016-09-09T20:53+02 FastClasspathScanner    ------------ Found whitelisted file: io/github/lukehutch/fastclasspathscanner/ScanInterruptedException.class
2016-09-09T20:53+02 FastClasspathScanner    ------------ Found whitelisted file: io/github/lukehutch/fastclasspathscanner/FastClasspathScanner$1.class
2016-09-09T20:53+02 FastClasspathScanner    ------------ Found whitelisted file: io/github/lukehutch/fastclasspathscanner/FastClasspathScanner.class
2016-09-09T20:53+02 FastClasspathScanner    ---- Found whitelisted file: .netbeans_automatic_build
2016-09-09T20:53+02 FastClasspathScanner    Classpath element order:
2016-09-09T20:53+02 FastClasspathScanner    -- 0: /path/to/plugin/target/plugin-1.0-SNAPSHOT.jar
2016-09-09T20:53+02 FastClasspathScanner    -- 1: /path/to/loader/target/classes
2016-09-09T20:53+02 FastClasspathScanner    -- 2: /path/to/fast-classpath-scanner/target/classes
2016-09-09T20:53+02 FastClasspathScanner    -- 3: /path/to/api/target/classes
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile jar:/path/to/plugin/target/plugin-1.0-SNAPSHOT.jar!plugin/TestPluginB.class (took 0.000991 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class plugin.TestPluginB
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Interfaces: api.Plugin
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/api/target/classes/api/Plugin.class (took 0.000688 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found interface class api.Plugin
2016-09-09T20:53+02 FastClasspathScanner    ---- Superinterface: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/matchprocessor/FileMatchContentsProcessor.class (took 0.000974 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found interface class io.github.lukehutch.fastclasspathscanner.matchprocessor.FileMatchContentsProcessor
2016-09-09T20:53+02 FastClasspathScanner    ---- Superinterface: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Annotations: java.lang.FunctionalInterface
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/loader/target/classes/loader/Launcher.class (took 0.000674 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class loader.Launcher
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/matchprocessor/ImplementingClassMatchProcessor.class (took 0.000187 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found interface class io.github.lukehutch.fastclasspathscanner.matchprocessor.ImplementingClassMatchProcessor
2016-09-09T20:53+02 FastClasspathScanner    ---- Superinterface: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Annotations: java.lang.FunctionalInterface
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile jar:/path/to/plugin/target/plugin-1.0-SNAPSHOT.jar!plugin/TestPluginA.class (took 0.000206 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class plugin.TestPluginA
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Interfaces: api.Plugin
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/matchprocessor/FileMatchProcessor.class (took 0.000193 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found interface class io.github.lukehutch.fastclasspathscanner.matchprocessor.FileMatchProcessor
2016-09-09T20:53+02 FastClasspathScanner    ---- Superinterface: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Annotations: java.lang.FunctionalInterface
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile jar:/path/to/plugin/target/plugin-1.0-SNAPSHOT.jar!plugin/TestPluginC.class (took 0.000220 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class plugin.TestPluginC
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Interfaces: api.Plugin
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/matchprocessor/FileMatchProcessorWithContext.class (took 0.000186 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found interface class io.github.lukehutch.fastclasspathscanner.matchprocessor.FileMatchProcessorWithContext
2016-09-09T20:53+02 FastClasspathScanner    ---- Superinterface: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Annotations: java.lang.FunctionalInterface
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/matchprocessor/MethodAnnotationMatchProcessor.class (took 0.000264 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found interface class io.github.lukehutch.fastclasspathscanner.matchprocessor.MethodAnnotationMatchProcessor
2016-09-09T20:53+02 FastClasspathScanner    ---- Superinterface: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Annotations: java.lang.FunctionalInterface
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/matchprocessor/SubinterfaceMatchProcessor.class (took 0.000199 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found interface class io.github.lukehutch.fastclasspathscanner.matchprocessor.SubinterfaceMatchProcessor
2016-09-09T20:53+02 FastClasspathScanner    ---- Superinterface: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Annotations: java.lang.FunctionalInterface
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/matchprocessor/ClassAnnotationMatchProcessor.class (took 0.000195 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found interface class io.github.lukehutch.fastclasspathscanner.matchprocessor.ClassAnnotationMatchProcessor
2016-09-09T20:53+02 FastClasspathScanner    ---- Superinterface: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Annotations: java.lang.FunctionalInterface
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/matchprocessor/SubclassMatchProcessor.class (took 0.000205 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found interface class io.github.lukehutch.fastclasspathscanner.matchprocessor.SubclassMatchProcessor
2016-09-09T20:53+02 FastClasspathScanner    ---- Superinterface: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Annotations: java.lang.FunctionalInterface
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/matchprocessor/StaticFinalFieldMatchProcessor.class (took 0.000195 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found interface class io.github.lukehutch.fastclasspathscanner.matchprocessor.StaticFinalFieldMatchProcessor
2016-09-09T20:53+02 FastClasspathScanner    ---- Superinterface: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Annotations: java.lang.FunctionalInterface
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/matchprocessor/ClassMatchProcessor.class (took 0.000195 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found interface class io.github.lukehutch.fastclasspathscanner.matchprocessor.ClassMatchProcessor
2016-09-09T20:53+02 FastClasspathScanner    ---- Superinterface: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Annotations: java.lang.FunctionalInterface
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/matchprocessor/FileMatchContentsProcessorWithContext.class (took 0.000194 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found interface class io.github.lukehutch.fastclasspathscanner.matchprocessor.FileMatchContentsProcessorWithContext
2016-09-09T20:53+02 FastClasspathScanner    ---- Superinterface: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Annotations: java.lang.FunctionalInterface
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$9.class (took 0.000220 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.scanner.ScanSpec$9
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Interfaces: io.github.lukehutch.fastclasspathscanner.scanner.ScanSpec$ClassMatcher
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/ClassGraphBuilder.class (took 0.000156 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.scanner.ClassGraphBuilder
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/ClasspathElementZip.class (took 0.000201 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.scanner.ClasspathElementZip
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: io.github.lukehutch.fastclasspathscanner.scanner.ClasspathElement
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$CallerResolver.class (took 0.000174 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.scanner.ScanSpec$CallerResolver
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.SecurityManager
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$2.class (took 0.000194 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.scanner.ScanSpec$2
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Interfaces: io.github.lukehutch.fastclasspathscanner.scanner.ScanSpec$ClassMatcher
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/ClassInfo$RelType.class (took 0.000145 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.scanner.ClassInfo$RelType
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Enum
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/Scanner$2.class (took 0.000183 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.scanner.Scanner$2
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Interfaces: io.github.lukehutch.fastclasspathscanner.utils.WorkQueue$WorkUnitProcessor
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$1.class (took 0.000209 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.scanner.ScanSpec$1
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Interfaces: io.github.lukehutch.fastclasspathscanner.scanner.ScanSpec$ClassMatcher
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/ScanResult.class (took 0.000173 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.scanner.ScanResult
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$3.class (took 0.000189 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.scanner.ScanSpec$3
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Interfaces: io.github.lukehutch.fastclasspathscanner.scanner.ScanSpec$ClassMatcher
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$14.class (took 0.000192 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.scanner.ScanSpec$14
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Interfaces: io.github.lukehutch.fastclasspathscanner.scanner.ScanSpec$FileMatchProcessorWrapper
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$16.class (took 0.000211 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.scanner.ScanSpec$16
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Interfaces: io.github.lukehutch.fastclasspathscanner.scanner.ScanSpec$FilePathTester
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/ClasspathRelativePath.class (took 0.000182 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.scanner.ClasspathRelativePath
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$11.class (took 0.000200 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.scanner.ScanSpec$11
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Interfaces: io.github.lukehutch.fastclasspathscanner.scanner.ScanSpec$FileMatchProcessorWrapper
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$6.class (took 0.000269 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.scanner.ScanSpec$6
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Interfaces: io.github.lukehutch.fastclasspathscanner.scanner.ScanSpec$ClassMatcher
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/ClasspathElement$1.class (took 0.000133 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.scanner.ClasspathElement$1
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/ClassInfo$1.class (took 0.000131 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.scanner.ClassInfo$1
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/ClasspathElement$ClasspathResource$ClasspathResourceInZipFile.class (took 0.000152 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.scanner.ClasspathElement$ClasspathResource$ClasspathResourceInZipFile
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: io.github.lukehutch.fastclasspathscanner.scanner.ClasspathElement$ClasspathResource
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/ClassInfoUnlinked.class (took 0.000145 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.scanner.ClassInfoUnlinked
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$ClassMatcher.class (took 0.000135 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found interface class io.github.lukehutch.fastclasspathscanner.scanner.ScanSpec$ClassMatcher
2016-09-09T20:53+02 FastClasspathScanner    ---- Superinterface: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec.class (took 0.000283 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.scanner.ScanSpec
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/ClassfileBinaryParser.class (took 0.000287 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.scanner.ClassfileBinaryParser
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Interfaces: java.lang.AutoCloseable
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/ClasspathElement$ClasspathResource$ClasspathResourceInDir.class (took 0.000132 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.scanner.ClasspathElement$ClasspathResource$ClasspathResourceInDir
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: io.github.lukehutch.fastclasspathscanner.scanner.ClasspathElement$ClasspathResource
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$4.class (took 0.000181 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.scanner.ScanSpec$4
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Interfaces: io.github.lukehutch.fastclasspathscanner.scanner.ScanSpec$ClassMatcher
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$8.class (took 0.000200 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.scanner.ScanSpec$8
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Interfaces: io.github.lukehutch.fastclasspathscanner.scanner.ScanSpec$ClassMatcher
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/ClasspathElementDir.class (took 0.000163 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.scanner.ClasspathElementDir
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: io.github.lukehutch.fastclasspathscanner.scanner.ClasspathElement
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$5.class (took 0.003663 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.scanner.ScanSpec$5
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Interfaces: io.github.lukehutch.fastclasspathscanner.scanner.ScanSpec$ClassMatcher
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/ClasspathFinder.class (took 0.000168 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.scanner.ClasspathFinder
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/Scanner$ClassfileParserChunk.class (took 0.000119 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.scanner.Scanner$ClassfileParserChunk
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$FilePathTester.class (took 0.000136 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found interface class io.github.lukehutch.fastclasspathscanner.scanner.ScanSpec$FilePathTester
2016-09-09T20:53+02 FastClasspathScanner    ---- Superinterface: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$15.class (took 0.000182 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.scanner.ScanSpec$15
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Interfaces: io.github.lukehutch.fastclasspathscanner.scanner.ScanSpec$FilePathTester
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/ClassInfo.class (took 0.000272 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.scanner.ClassInfo
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Interfaces: java.lang.Comparable
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$18.class (took 0.000171 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.scanner.ScanSpec$18
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Interfaces: io.github.lukehutch.fastclasspathscanner.scanner.ScanSpec$FilePathTester
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$17.class (took 0.000185 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.scanner.ScanSpec$17
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Interfaces: io.github.lukehutch.fastclasspathscanner.scanner.ScanSpec$FilePathTester
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$ScanSpecPathMatch.class (took 0.000123 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.scanner.ScanSpec$ScanSpecPathMatch
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Enum
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/Scanner$1.class (took 0.000112 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.scanner.Scanner$1
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: io.github.lukehutch.fastclasspathscanner.utils.Recycler
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$FilePathTesterAndMatchProcessorWrapper.class (took 0.000116 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.scanner.ScanSpec$FilePathTesterAndMatchProcessorWrapper
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/ClassInfo$ClassType.class (took 0.000133 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.scanner.ClassInfo$ClassType
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Enum
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$13.class (took 0.000163 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.scanner.ScanSpec$13
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Interfaces: io.github.lukehutch.fastclasspathscanner.scanner.ScanSpec$FileMatchProcessorWrapper
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/Scanner$3.class (took 0.000166 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.scanner.Scanner$3
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Interfaces: io.github.lukehutch.fastclasspathscanner.utils.WorkQueue$WorkUnitProcessor
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/ClasspathRelativePathToElementMap.class (took 0.000180 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.scanner.ClasspathRelativePathToElementMap
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: io.github.lukehutch.fastclasspathscanner.utils.SingletonMap
2016-09-09T20:53+02 FastClasspathScanner    ---- Interfaces: java.lang.AutoCloseable
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$FileMatchProcessorWrapper.class (took 0.000132 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found interface class io.github.lukehutch.fastclasspathscanner.scanner.ScanSpec$FileMatchProcessorWrapper
2016-09-09T20:53+02 FastClasspathScanner    ---- Superinterface: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/ClasspathElement.class (took 0.000150 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.scanner.ClasspathElement
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$7.class (took 0.000170 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.scanner.ScanSpec$7
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Interfaces: io.github.lukehutch.fastclasspathscanner.scanner.ScanSpec$ClassMatcher
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/Scanner.class (took 0.000249 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.scanner.Scanner
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Interfaces: java.util.concurrent.Callable
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/ClasspathElement$ClasspathResource.class (took 0.000140 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.scanner.ClasspathElement$ClasspathResource
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$10.class (took 0.000175 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.scanner.ScanSpec$10
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Interfaces: io.github.lukehutch.fastclasspathscanner.scanner.ScanSpec$ClassMatcher
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/scanner/ScanSpec$12.class (took 0.000149 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.scanner.ScanSpec$12
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Interfaces: io.github.lukehutch.fastclasspathscanner.scanner.ScanSpec$FileMatchProcessorWrapper
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/ScanInterruptedException.class (took 0.000146 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.ScanInterruptedException
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.RuntimeException
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/FastClasspathScanner$1.class (took 0.000172 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.FastClasspathScanner$1
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Interfaces: java.util.concurrent.Callable
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/FastClasspathScanner.class (took 0.000171 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.FastClasspathScanner
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/utils/NestedJarHandler$2.class (took 0.000136 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.utils.NestedJarHandler$2
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: io.github.lukehutch.fastclasspathscanner.utils.SingletonMap
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/utils/MultiMapKeyToList.class (took 0.000120 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.utils.MultiMapKeyToList
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/utils/NestedJarHandler.class (took 0.000161 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.utils.NestedJarHandler
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Interfaces: java.lang.AutoCloseable
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/utils/SingletonMap.class (took 0.000113 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.utils.SingletonMap
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/utils/WorkQueue$1.class (took 0.000135 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.utils.WorkQueue$1
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Interfaces: java.util.concurrent.Callable
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/utils/JarUtils.class (took 0.000107 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.utils.JarUtils
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/utils/MultiMapKeyToSet.class (took 0.000116 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.utils.MultiMapKeyToSet
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/utils/Recycler.class (took 0.000142 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.utils.Recycler
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Interfaces: java.lang.AutoCloseable
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/utils/ReflectionUtils.class (took 0.000108 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.utils.ReflectionUtils
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/utils/AutoCloseableExecutorService.class (took 0.000170 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.utils.AutoCloseableExecutorService
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.util.concurrent.ThreadPoolExecutor
2016-09-09T20:53+02 FastClasspathScanner    ---- Interfaces: java.lang.AutoCloseable
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/utils/LogNode.class (took 0.000136 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.utils.LogNode
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/utils/FastPathResolver.class (took 0.000118 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.utils.FastPathResolver
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/utils/SimpleThreadFactory.class (took 0.000151 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.utils.SimpleThreadFactory
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Interfaces: java.util.concurrent.ThreadFactory
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/utils/AdditionOrderedSet.class (took 0.000105 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.utils.AdditionOrderedSet
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/utils/VersionFinder.class (took 0.000149 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.utils.VersionFinder
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/utils/WorkQueue$WorkUnitProcessor.class (took 0.000106 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found interface class io.github.lukehutch.fastclasspathscanner.utils.WorkQueue$WorkUnitProcessor
2016-09-09T20:53+02 FastClasspathScanner    ---- Superinterface: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/utils/SingletonMap$1.class (took 0.000101 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.utils.SingletonMap$1
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/utils/FastManifestParser.class (took 0.000121 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.utils.FastManifestParser
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/utils/NestedJarHandler$1.class (took 0.000168 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.utils.NestedJarHandler$1
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: io.github.lukehutch.fastclasspathscanner.utils.SingletonMap
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/utils/WorkQueue.class (took 0.000183 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.utils.WorkQueue
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Interfaces: java.lang.AutoCloseable
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/utils/Join.class (took 0.000110 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.utils.Join
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/utils/SingletonMap$SingletonHolder.class (took 0.000106 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.utils.SingletonMap$SingletonHolder
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/utils/InterruptionChecker.class (took 0.000115 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.utils.InterruptionChecker
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/utils/NestedJarHandler$1$1.class (took 0.000103 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.utils.NestedJarHandler$1$1
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: io.github.lukehutch.fastclasspathscanner.utils.Recycler
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/classloaderhandler/ClassLoaderHandler.class (took 0.000108 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found interface class io.github.lukehutch.fastclasspathscanner.classloaderhandler.ClassLoaderHandler
2016-09-09T20:53+02 FastClasspathScanner    ---- Superinterface: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/classloaderhandler/URLClassLoaderHandler.class (took 0.000151 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.classloaderhandler.URLClassLoaderHandler
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Interfaces: io.github.lukehutch.fastclasspathscanner.classloaderhandler.ClassLoaderHandler
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/classloaderhandler/WeblogicClassLoaderHandler.class (took 0.000134 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.classloaderhandler.WeblogicClassLoaderHandler
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Interfaces: io.github.lukehutch.fastclasspathscanner.classloaderhandler.ClassLoaderHandler
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/classloaderhandler/EquinoxClassLoaderHandler.class (took 0.000166 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.classloaderhandler.EquinoxClassLoaderHandler
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Interfaces: io.github.lukehutch.fastclasspathscanner.classloaderhandler.ClassLoaderHandler
2016-09-09T20:53+02 FastClasspathScanner    Parsing classfile /path/to/fast-classpath-scanner/target/classes/io/github/lukehutch/fastclasspathscanner/classloaderhandler/JBossClassLoaderHandler.class (took 0.000142 sec)
2016-09-09T20:53+02 FastClasspathScanner    -- Found class io.github.lukehutch.fastclasspathscanner.classloaderhandler.JBossClassLoaderHandler
2016-09-09T20:53+02 FastClasspathScanner    ---- Superclass: java.lang.Object
2016-09-09T20:53+02 FastClasspathScanner    ---- Interfaces: io.github.lukehutch.fastclasspathscanner.classloaderhandler.ClassLoaderHandler
2016-09-09T20:53+02 FastClasspathScanner    Building class graph (took 0.002098 sec)
2016-09-09T20:53+02 FastClasspathScanner    Completed scan (took 0.047823 sec)

@lukehutch
Copy link
Member

lukehutch commented Sep 10, 2016

Hi, I fixed both issues (the methods now support chaining, and java.class.path is not read if you call FastClasspathScanner.overrideClassLoaders()). Note that java.class.path is still read if you only call FastClasspathScanner.addClassLoader(), since this only adds to the classpath, it doesn't replace it.

This should work for you, but please comment and let me know. Feel free to re-open or file another bug if you find other issues. Thanks for the report!

@lukehutch
Copy link
Member

I also just added .overrideClasspath() methods for Iterables and arrays of objects -- this will work with Strings, Files and Paths.

@jrb0001
Copy link
Author

jrb0001 commented Sep 10, 2016

I use this code to test:

FastClasspathScanner scanner = new FastClasspathScanner().verbose().overrideClassLoaders(loader);
ScanResult result = scanner.scan();

I think, it doesn't work because you never set that overrideClassLoaders flag. It works if I add this.overrideClassLoaders = true; in ScanSpec after line 484.

I don't think I can re-open an issue I didn't close: Issue on github

@lukehutch lukehutch reopened this Sep 10, 2016
lukehutch added a commit that referenced this issue Sep 10, 2016
@lukehutch
Copy link
Member

lukehutch commented Sep 10, 2016

@jrb0001 Sorry, I don't know how I missed that, I did intend to add that line! Thanks for going to the trouble of figuring out what was wrong.

I didn't know that issue creators could not re-open issues at will, that seems like it would cause problems more often than it solves.

Presumably you can close this if it's fixed though -- please test one more time, hopefully now this works for you.

@jrb0001
Copy link
Author

jrb0001 commented Sep 10, 2016

Fixed!

Thank you for this really useful library.

@jrb0001 jrb0001 closed this as completed Sep 10, 2016
@lukehutch
Copy link
Member

Great, you're welcome, thanks for the suggestions and testing!

I might wait a bit to push out a new release, in case other issues are reported, to reduce version churn, but this will be in the next release (2.0.4).

@lukehutch
Copy link
Member

Released in version 2.0.4.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants