Commons ClassScan

The standard Java runtime hides many details about classes, particularly the location of classes which can potentially be loaded, and the details of unloaded classes.
ClassScan can provide information about all of the classes available to the runtime, whether or not the class has been loaded.
An application may want to discover:

  • all of the implementers of a particular interface
  • all of the classes with a specific annotation (or even a particular annotation value)
  • a particular field or all of the fields of a class
  • a particular method or all of the fields of a class
  • Any of the above, limited by the location of the class (eg. only classes annotated with @Entity from a jar that has a META-INF/persistence.xml file


A getting started user guide is available together with various project reports.


ClassScan consists of multiple modules. The details of these modules are linked below:

  • api - The client Application Programming Interface and Service Provider Interface
  • bcel - A backend provider which digests class bytes using BCEL

Release Information

Source is available from svn repository


The commons mailing lists act as the main support forum. The user list is suitable for most library usage queries. The dev list is intended for the development discussion. Please remember that the lists are shared between all commons components, so prefix your email by [classscan].

Bug reports and enhancements are also welcomed via the JIRA issue tracker.