All Versions
Latest Version
Avg Release Cycle
10 days
Latest Release
905 days ago

Changelog History
Page 1

  • v4.8.94

    December 10, 2020
  • v4.8.93 Changes

    December 02, 2020

    A few changes to classloading:

    1. If .overrideClassLoaders(...) or .overrideClasspath(...) is called before .scan(), then only the overrides are used (ClassGraph will not fall back to trying any other known classloaders). This might break things for some users, but it matches the expectation that should have been conveyed by the API. ๐Ÿš€ 2. If you run a scan inside a scan, and you call .overrideClassLoaders(MyClass.class.getClassLoader()), where MyClass was itself loaded by ClassGraph in the outer scan, using scanResult.getClassInfo("mypackage.MyClass").loadClass(), then the override classloader is actually an instance of ClassGraphClassLoader. This was not supported before, but it supported now as of this release. If you use this, then any classloading in the inner scan will first try loading classes with the ClassGraphClassLoader instance from the outer scan, and if that fails, then the inner scan's ClassGraphClassLoader will be tried. This is to allow for classes to be compatible between the outer scan and the inner scan, in cases where both scans find the same classes. (Classes that are identical but were loaded by different classloaders are not seen by the JRE as being the same class.) (#485, thanks to @TheSpiritXIII for the bug report.)
  • v4.8.92 Changes

    November 28, 2020

    ๐Ÿš€ Small update to previous release: strip final slash from URIs that end in an automatic package prefix, i.e. !/BOOT-INF/classes/ -> !/BOOT-INF/classes

  • v4.8.91 Changes

    November 28, 2020

    โž• Added automatic package roots to classpath element URIs, e.g. for Spring-Boot applications. Previously if you called ClassGraph#getClasspathElementURIs(), you would get the URI for the Spring-Boot jar, rather than that URI with !/BOOT-INF/classes/ appended.

    Thanks to Giuseppe Navato for the report.

  • v4.8.90 Changes

    September 09, 2020

    ๐Ÿ›  Fix Windows path separator incompatibility introduced in 4.8.88 (#477, thanks to @adelel1 for reporting)

  • v4.8.89 Changes

    August 26, 2020

    โž• Added the ability to filter classpath elements by URL, using ClassGraph#filterClasspathElementsByURL(ClasspathElementURLFilter) (#468).

  • v4.8.88 Changes

    August 24, 2020

    ๐Ÿ›  Fixed issue where + characters were mistakenly being replaced with spaces in classpath URLs, due to a longstanding JDK bug that the JDK team is never going to fix. (#468, thanks to @adelel1 for reporting)

  • v4.8.87 Changes

    June 23, 2020

    โž• Added MethodInfo#loadClassAndGetConstructor() for getting Construtor<?> instances for constructor methods. (#447, thanks to @Thomas-Langer for the request.)

  • v4.8.86 Changes

    June 12, 2020

    โœ… In solidarity with worldwide protests demanding an end to racial injustice and racism, all methods of ClassGraph containing the words "whitelist" and "blacklist" have been renamed to instead use the words "accept" and "reject" respectively. (The old methods are still in place for compatibility, but they have been marked as deprecated.)

    Some may object to this change as an over-sensitization or racialization of terms that were never inherently racial in nature. The terms "whitelist" or "blacklist" may not bring to mind racially-oriented connotations to many people. However, these terms originated in a time when the very words "white" and "black" had even stronger discriminatory connotations than they have now:

    From :

    In this context, it is worth examining the origins of the term โ€œblacklistโ€ from the Douglas Harper Etymology Dictionary, which states that its origin and history is:


    โœ… > also black-list, black list, โ€œlist of persons who have incurred suspicion,โ€ 1610s, from black (adj.), here indicative of disgrace, censure, punishment (attested from 1590s, in black book) + list (n.). Specifically of employersโ€™ list of workers considered troublesome (usually for union activity) is from 1888. As a verb, from 1718. Related: Blacklisted; blacklisting.

    It is notable that the first recorded use of the term occurs at the time of mass enslavement and forced deportation of Africans to work in European-held colonies in the Americas.

    ๐Ÿ‘€ May we soon see concrete progress towards a world free of racism, prejudice and injustice.

    -- Luke Hutchison (ClassGraph creator and maintainer)

  • v4.8.85 Changes

    June 10, 2020

    ๐Ÿ›  Fix a package root prefix duplication issue with Spring Boot executable jars (#435, thanks to @michael-simons for reporting).