Class ScanResult

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable

    public final class ScanResult
    extends java.lang.Object
    implements java.io.Closeable
    The result of a scan. You should assign a ScanResult in a try-with-resources block, or manually close it when you have finished with the result of a scan.
    • Field Detail

      • rawClasspathEltOrderStrs

        private java.util.List<java.lang.String> rawClasspathEltOrderStrs
        The order of raw classpath elements.
      • classpathOrder

        private java.util.List<ClasspathElement> classpathOrder
        The order of classpath elements, after inner jars have been extracted to temporary files, etc.
      • allAcceptedResourcesCached

        private ResourceList allAcceptedResourcesCached
        A list of all files that were found in accepted packages.
      • getResourcesWithPathCallCount

        private final java.util.concurrent.atomic.AtomicInteger getResourcesWithPathCallCount
        The number of times getResourcesWithPath(String) has been called.
      • pathToAcceptedResourcesCached

        private java.util.Map<java.lang.String,​ResourceList> pathToAcceptedResourcesCached
        The map from path (relative to package root) to a list of Resource elements with the matching path.
      • classNameToClassInfo

        java.util.Map<java.lang.String,​ClassInfo> classNameToClassInfo
        The map from class name to ClassInfo.
      • packageNameToPackageInfo

        private java.util.Map<java.lang.String,​PackageInfo> packageNameToPackageInfo
        The map from package name to PackageInfo.
      • moduleNameToModuleInfo

        private java.util.Map<java.lang.String,​ModuleInfo> moduleNameToModuleInfo
        The map from class name to ClassInfo.
      • fileToLastModified

        private java.util.Map<java.io.File,​java.lang.Long> fileToLastModified
        The file, directory and jarfile resources timestamped during a scan, along with their timestamp at the time of the scan. For jarfiles, the timestamp represents the timestamp of all files within the jar. May be null, if this ScanResult object is the result of a call to ClassGraph#getUniqueClasspathElementsAsync().
      • isObtainedFromDeserialization

        private boolean isObtainedFromDeserialization
        If true, this ScanResult was produced by fromJSON(String).
      • classGraphClassLoader

        private ClassGraphClassLoader classGraphClassLoader
        A custom ClassLoader that can load classes found during the scan.
      • nestedJarHandler

        private NestedJarHandler nestedJarHandler
        The nested jar handler instance.
      • scanSpec

        ScanSpec scanSpec
        The scan spec.
      • closed

        private final java.util.concurrent.atomic.AtomicBoolean closed
        If true, this ScanResult has already been closed.
      • topLevelLog

        private final LogNode topLevelLog
        The toplevel log.
      • weakReference

        private final java.lang.ref.WeakReference<ScanResult> weakReference
        The WeakReference for this ScanResult.
      • nonClosedWeakReferences

        private static java.util.Set<java.lang.ref.WeakReference<ScanResult>> nonClosedWeakReferences
        The set of WeakReferences to non-closed ScanResult objects. Uses WeakReferences so that garbage collection is not blocked. (Bug #233)
      • initialized

        private static final java.util.concurrent.atomic.AtomicBoolean initialized
        If true, ScanResult#staticInit() has been run.
      • CURRENT_SERIALIZATION_FORMAT

        private static final java.lang.String CURRENT_SERIALIZATION_FORMAT
        The current serialization format.
        See Also:
        Constant Field Values
    • Constructor Detail

      • ScanResult

        ScanResult​(ScanSpec scanSpec,
                   java.util.List<ClasspathElement> classpathOrder,
                   java.util.List<java.lang.String> rawClasspathEltOrderStrs,
                   ClasspathFinder classpathFinder,
                   java.util.Map<java.lang.String,​ClassInfo> classNameToClassInfo,
                   java.util.Map<java.lang.String,​PackageInfo> packageNameToPackageInfo,
                   java.util.Map<java.lang.String,​ModuleInfo> moduleNameToModuleInfo,
                   java.util.Map<java.io.File,​java.lang.Long> fileToLastModified,
                   NestedJarHandler nestedJarHandler,
                   LogNode topLevelLog)
        The result of a scan. Make sure you call complete() after calling the constructor.
        Parameters:
        scanSpec - the scan spec
        classpathOrder - the classpath order
        rawClasspathEltOrderStrs - the raw classpath element order
        classpathFinder - the ClasspathFinder
        classNameToClassInfo - a map from class name to class info
        packageNameToPackageInfo - a map from package name to package info
        moduleNameToModuleInfo - a map from module name to module info
        fileToLastModified - a map from file to last modified time
        nestedJarHandler - the nested jar handler
        topLevelLog - the toplevel log
    • Method Detail

      • init

        static void init​(ReflectionUtils reflectionUtils)
        Static initialization (warm up classloading), called when the ClassGraph class is initialized.
      • indexResourcesAndClassInfo

        private void indexResourcesAndClassInfo​(LogNode log)
        Index Resource and ClassInfo objects.
        Parameters:
        log - the log
      • getClasspathFiles

        public java.util.List<java.io.File> getClasspathFiles()
        Returns the list of File objects for unique classpath elements (directories or jarfiles), in classloader resolution order.
        Returns:
        The unique classpath elements.
      • getClasspath

        public java.lang.String getClasspath()
        Returns all unique directories or zip/jarfiles on the classpath, in classloader resolution order, as a classpath string, delineated with the standard path separator character.
        Returns:
        a the unique directories and jarfiles on the classpath, in classpath resolution order, as a path string.
      • getClasspathURIs

        public java.util.List<java.net.URI> getClasspathURIs()
        Returns an ordered list of unique classpath element and module URIs.
        Returns:
        The unique classpath element and module URIs.
      • getClasspathURLs

        public java.util.List<java.net.URL> getClasspathURLs()
        Returns an ordered list of unique classpath element and module URLs. Will skip any system modules or modules that are part of a jlink'd runtime image, since URL does not support the jrt: URI scheme.
        Returns:
        The unique classpath element and module URLs.
      • getModules

        public java.util.List<ModuleRef> getModules()
        Get ModuleRef references for all visible modules.
        Returns:
        ModuleRef references for all visible modules.
      • getModulePathInfo

        public ModulePathInfo getModulePathInfo()
        Get the module path info provided on the commandline with --module-path, --add-modules, --patch-module, --add-exports, --add-opens, and --add-reads, and also the Add-Exports and Add-Opens entries from jarfile manifest files encountered during scanning.

        Note that the returned ModulePathInfo object does not include classpath entries from the traditional classpath or system modules. Use getModules() to get all visible modules, including anonymous, automatic and system modules.

        Returns:
        The ModulePathInfo.
      • getAllResources

        public ResourceList getAllResources()
        Get the list of all resources.
        Returns:
        A list of all resources (including classfiles and non-classfiles) found in accepted packages.
      • getAllResourcesAsMap

        public java.util.Map<java.lang.String,​ResourceList> getAllResourcesAsMap()
        Get a map from resource path to Resource for all resources (including classfiles and non-classfiles) found in accepted packages.
        Returns:
        The map from resource path to Resource for all resources (including classfiles and non-classfiles) found in accepted packages.
      • getResourcesWithPath

        public ResourceList getResourcesWithPath​(java.lang.String resourcePath)
        Get the list of all resources found in accepted packages that have the given path, relative to the package root of the classpath element. May match several resources, up to one per classpath element.
        Parameters:
        resourcePath - A complete resource path, relative to the classpath entry package root.
        Returns:
        A list of all resources found in accepted packages that have the given path, relative to the package root of the classpath element. May match several resources, up to one per classpath element.
      • getResourcesWithPathIgnoringAccept

        public ResourceList getResourcesWithPathIgnoringAccept​(java.lang.String resourcePath)
        Get the list of all resources found in any classpath element, whether in accepted packages or not (as long as the resource is not rejected), that have the given path, relative to the package root of the classpath element. May match several resources, up to one per classpath element. Note that this may not return a non-accepted resource, particularly when scanning directory classpath elements, because recursive scanning terminates once there are no possible accepted resources below a given directory. However, resources in ancestral directories of accepted directories can be found using this method.
        Parameters:
        resourcePath - A complete resource path, relative to the classpath entry package root.
        Returns:
        A list of all resources found in any classpath element, whether in accepted packages or not (as long as the resource is not rejected), that have the given path, relative to the package root of the classpath element. May match several resources, up to one per classpath element.
      • getResourcesWithPathIgnoringWhitelist

        @Deprecated
        public ResourceList getResourcesWithPathIgnoringWhitelist​(java.lang.String resourcePath)
        Parameters:
        resourcePath - A complete resource path, relative to the classpath entry package root.
        Returns:
        A list of all resources found in any classpath element, whether in accepted packages or not (as long as the resource is not rejected), that have the given path, relative to the package root of the classpath element. May match several resources, up to one per classpath element.
      • getResourcesWithLeafName

        public ResourceList getResourcesWithLeafName​(java.lang.String leafName)
        Get the list of all resources found in accepted packages that have the requested leafname.
        Parameters:
        leafName - A resource leaf filename.
        Returns:
        A list of all resources found in accepted packages that have the requested leafname.
      • getResourcesWithExtension

        public ResourceList getResourcesWithExtension​(java.lang.String extension)
        Get the list of all resources found in accepted packages that have the requested filename extension.
        Parameters:
        extension - A filename extension, e.g. "xml" to match all resources ending in ".xml".
        Returns:
        A list of all resources found in accepted packages that have the requested filename extension.
      • getResourcesMatchingPattern

        public ResourceList getResourcesMatchingPattern​(java.util.regex.Pattern pattern)
        Get the list of all resources found in accepted packages that have a path matching the requested regex pattern. See also {getResourcesMatchingWildcard(String).
        Parameters:
        pattern - A pattern to match Resource paths with.
        Returns:
        A list of all resources found in accepted packages that have a path matching the requested pattern.
      • getResourcesMatchingWildcard

        public ResourceList getResourcesMatchingWildcard​(java.lang.String wildcardString)
        Get the list of all resources found in accepted packages that have a path matching the requested wildcard string.

        The wildcard string may contain:

        • Single asterisks, to match zero or more of any character other than '/'
        • Double asterisks, to match zero or more of any character
        • Question marks, to match one character
        • Any other regexp-style syntax, such as character sets (denoted by square brackets) -- the remainder of the expression is passed through to the Java regex parser, after escaping dot characters.

        The wildcard string is translated in a simplistic way into a regex. If you need more complex pattern matching, use a regex directly, via getResourcesMatchingPattern(Pattern).

        Parameters:
        wildcardString - A wildcard (glob) pattern to match Resource paths with.
        Returns:
        A list of all resources found in accepted packages that have a path matching the requested wildcard string.
      • getModuleInfo

        public ModuleInfo getModuleInfo​(java.lang.String moduleName)
        Get the ModuleInfo object for the named module, or null if no module of the requested name was found during the scan.
        Parameters:
        moduleName - The module name.
        Returns:
        The ModuleInfo object for the named module, or null if the module was not found.
      • getModuleInfo

        public ModuleInfoList getModuleInfo()
        Get all modules found during the scan.
        Returns:
        A list of all modules found during the scan, or the empty list if none.
      • getPackageInfo

        public PackageInfo getPackageInfo​(java.lang.String packageName)
        Get the PackageInfo object for the named package, or null if no package of the requested name was found during the scan.
        Parameters:
        packageName - The package name.
        Returns:
        The PackageInfo object for the named package, or null if the package was not found.
      • getPackageInfo

        public PackageInfoList getPackageInfo()
        Get all packages found during the scan.
        Returns:
        A list of all packages found during the scan, or the empty list if none.
      • getReverseClassDependencyMap

        public java.util.Map<ClassInfo,​ClassInfoList> getReverseClassDependencyMap()
        Get the reverse class dependency map, i.e. a map from the ClassInfo object for each dependency class (accepted or not) to a list of the accepted classes that referenced that class as a dependency (i.e. returns a map from dependencies to dependents). Note that you need to call ClassGraph.enableInterClassDependencies() before ClassGraph.scan() for this method to work. You should also call ClassGraph.enableExternalClasses() before ClassGraph.scan() if you want non-accepted classes to appear in the result. See also getClassDependencyMap().
        Returns:
        A map from a ClassInfo object for each dependency class (accepted or not) to a list of the accepted classes that referenced that class as a dependency (i.e. returns a map from dependencies to dependents).
      • getClassInfo

        public ClassInfo getClassInfo​(java.lang.String className)
        Get the ClassInfo object for the named class, or null if no class of the requested name was found in an accepted/non-rejected package during the scan.
        Parameters:
        className - The class name.
        Returns:
        The ClassInfo object for the named class, or null if the class was not found.
      • getAllClasses

        public ClassInfoList getAllClasses()
        Get all classes, interfaces and annotations found during the scan.
        Returns:
        A list of all accepted classes found during the scan, or the empty list if none.
      • getAllEnums

        public ClassInfoList getAllEnums()
        Get all Enum classes found during the scan.
        Returns:
        A list of all Enum classes found during the scan, or the empty list if none.
      • getAllRecords

        public ClassInfoList getAllRecords()
        Get all record classes found during the scan (JDK 14+).
        Returns:
        A list of all record classes found during the scan, or the empty list if none.
      • getAllClassesAsMap

        public java.util.Map<java.lang.String,​ClassInfo> getAllClassesAsMap()
        Get a map from class name to ClassInfo object for all classes, interfaces and annotations found during the scan.
        Returns:
        The map from class name to ClassInfo object for all classes, interfaces and annotations found during the scan.
      • getAllStandardClasses

        public ClassInfoList getAllStandardClasses()
        Get all standard (non-interface/non-annotation) classes found during the scan.
        Returns:
        A list of all accepted standard classes found during the scan, or the empty list if none.
      • getSubclasses

        public ClassInfoList getSubclasses​(java.lang.Class<?> superclass)
        Get all subclasses of the superclass.
        Parameters:
        superclass - The superclass.
        Returns:
        A list of subclasses of the superclass, or the empty list if none.
      • getSubclasses

        public ClassInfoList getSubclasses​(java.lang.String superclassName)
        Get all subclasses of the named superclass.
        Parameters:
        superclassName - The name of the superclass.
        Returns:
        A list of subclasses of the named superclass, or the empty list if none.
      • getSuperclasses

        public ClassInfoList getSuperclasses​(java.lang.String subclassName)
        Get superclasses of the named subclass.
        Parameters:
        subclassName - The name of the subclass.
        Returns:
        A list of superclasses of the named subclass, or the empty list if none.
      • getSuperclasses

        public ClassInfoList getSuperclasses​(java.lang.Class<?> subclass)
        Get superclasses of the subclass.
        Parameters:
        subclass - The subclass.
        Returns:
        A list of superclasses of the named subclass, or the empty list if none.
      • getClassesWithMethodAnnotation

        public ClassInfoList getClassesWithMethodAnnotation​(java.lang.Class<? extends java.lang.annotation.Annotation> methodAnnotation)
        Get classes that have a method with an annotation of the named type.
        Parameters:
        methodAnnotation - the method annotation.
        Returns:
        A list of classes with a method that has an annotation of the named type, or the empty list if none.
      • getClassesWithMethodAnnotation

        public ClassInfoList getClassesWithMethodAnnotation​(java.lang.String methodAnnotationName)
        Get classes that have a method with an annotation of the named type.
        Parameters:
        methodAnnotationName - the name of the method annotation.
        Returns:
        A list of classes with a method that has an annotation of the named type, or the empty list if none.
      • getClassesWithMethodParameterAnnotation

        public ClassInfoList getClassesWithMethodParameterAnnotation​(java.lang.Class<? extends java.lang.annotation.Annotation> methodParameterAnnotation)
        Get classes that have a method with a parameter that is annotated with an annotation of the named type.
        Parameters:
        methodParameterAnnotation - the method parameter annotation.
        Returns:
        A list of classes that have a method with a parameter annotated with the named annotation type, or the empty list if none.
      • getClassesWithMethodParameterAnnotation

        public ClassInfoList getClassesWithMethodParameterAnnotation​(java.lang.String methodParameterAnnotationName)
        Get classes that have a method with a parameter that is annotated with an annotation of the named type.
        Parameters:
        methodParameterAnnotationName - the name of the method parameter annotation.
        Returns:
        A list of classes that have a method with a parameter annotated with the named annotation type, or the empty list if none.
      • getClassesWithFieldAnnotation

        public ClassInfoList getClassesWithFieldAnnotation​(java.lang.Class<? extends java.lang.annotation.Annotation> fieldAnnotation)
        Get classes that have a field with an annotation of the named type.
        Parameters:
        fieldAnnotation - the field annotation.
        Returns:
        A list of classes that have a field with an annotation of the named type, or the empty list if none.
      • getClassesWithFieldAnnotation

        public ClassInfoList getClassesWithFieldAnnotation​(java.lang.String fieldAnnotationName)
        Get classes that have a field with an annotation of the named type.
        Parameters:
        fieldAnnotationName - the name of the field annotation.
        Returns:
        A list of classes that have a field with an annotation of the named type, or the empty list if none.
      • getAllInterfaces

        public ClassInfoList getAllInterfaces()
        Get all interface classes found during the scan (not including annotations, which are also technically interfaces). See also getAllInterfacesAndAnnotations().
        Returns:
        A list of all accepted interfaces found during the scan, or the empty list if none.
      • getInterfaces

        public ClassInfoList getInterfaces​(java.lang.String className)
        Get all interfaces implemented by the named class or by one of its superclasses, if the named class is a standard class, or the superinterfaces extended by this interface, if it is an interface.
        Parameters:
        className - The class name.
        Returns:
        A list of interfaces implemented by the named class (or superinterfaces extended by the named interface), or the empty list if none.
      • getInterfaces

        public ClassInfoList getInterfaces​(java.lang.Class<?> classRef)
        Get all interfaces implemented by the class or by one of its superclasses, if the given class is a standard class, or the superinterfaces extended by this interface, if it is an interface.
        Parameters:
        classRef - The class.
        Returns:
        A list of interfaces implemented by the given class (or superinterfaces extended by the given interface), or the empty list if none.
      • getClassesImplementing

        public ClassInfoList getClassesImplementing​(java.lang.Class<?> interfaceClass)
        Get all classes that implement (or have superclasses that implement) the interface (or one of its subinterfaces).
        Parameters:
        interfaceClass - The interface class.
        Returns:
        A list of all classes that implement the interface, or the empty list if none.
      • getClassesImplementing

        public ClassInfoList getClassesImplementing​(java.lang.String interfaceName)
        Get all classes that implement (or have superclasses that implement) the named interface (or one of its subinterfaces).
        Parameters:
        interfaceName - The interface name.
        Returns:
        A list of all classes that implement the named interface, or the empty list if none.
      • getAllAnnotations

        public ClassInfoList getAllAnnotations()
        Get all annotation classes found during the scan. See also getAllInterfacesAndAnnotations().
        Returns:
        A list of all annotation classes found during the scan, or the empty list if none.
      • getAllInterfacesAndAnnotations

        public ClassInfoList getAllInterfacesAndAnnotations()
        Get all interface or annotation classes found during the scan. (Annotations are technically interfaces, and they can be implemented.)
        Returns:
        A list of all accepted interfaces found during the scan, or the empty list if none.
      • getClassesWithAnnotation

        public ClassInfoList getClassesWithAnnotation​(java.lang.Class<? extends java.lang.annotation.Annotation> annotation)
        Get classes with the class annotation or meta-annotation.
        Parameters:
        annotation - The class annotation or meta-annotation.
        Returns:
        A list of all non-annotation classes that were found with the class annotation during the scan, or the empty list if none.
      • getClassesWithAnnotation

        public ClassInfoList getClassesWithAnnotation​(java.lang.String annotationName)
        Get classes with the named class annotation or meta-annotation.
        Parameters:
        annotationName - The name of the class annotation or meta-annotation.
        Returns:
        A list of all non-annotation classes that were found with the named class annotation during the scan, or the empty list if none.
      • getAnnotationsOnClass

        public ClassInfoList getAnnotationsOnClass​(java.lang.String className)
        Get annotations on the named class. This only returns the annotating classes; to read annotation parameters, call getClassInfo(String) to get the ClassInfo object for the named class, then if the ClassInfo object is non-null, call ClassInfo.getAnnotationInfo() to get detailed annotation info.
        Parameters:
        className - The name of the class.
        Returns:
        A list of all annotation classes that were found with the named class annotation during the scan, or the empty list if none.
      • classpathContentsModifiedSinceScan

        public boolean classpathContentsModifiedSinceScan()
        Determine whether the classpath contents have been modified since the last scan. Checks the timestamps of files and jarfiles encountered during the previous scan to see if they have changed. Does not perform a full scan, so cannot detect the addition of directories that newly match accept criteria -- you need to perform a full scan to detect those changes.
        Returns:
        true if the classpath contents have been modified since the last scan.
      • classpathContentsLastModifiedTime

        public long classpathContentsLastModifiedTime()
        Find the maximum last-modified timestamp of any accepted file/directory/jarfile encountered during the scan. Checks the current timestamps, so this should increase between calls if something changes in accepted paths. Assumes both file and system timestamps were generated from clocks whose time was accurate. Ignores timestamps greater than the system time.

        This method cannot in general tell if classpath has changed (or modules have been added or removed) if it is run twice during the same runtime session.

        Returns:
        the maximum last-modified time for accepted files/directories/jars encountered during the scan.
      • getClassLoaderOrderRespectingParentDelegation

        java.lang.ClassLoader[] getClassLoaderOrderRespectingParentDelegation()
        Get the ClassLoader order, respecting parent-first/parent-last delegation order.
        Returns:
        the class loader order.
      • loadClass

        public java.lang.Class<?> loadClass​(java.lang.String className,
                                            boolean returnNullIfClassNotFound)
                                     throws java.lang.IllegalArgumentException
        Load a class given a class name. If ignoreExceptions is false, and the class cannot be loaded (due to classloading error, or due to an exception being thrown in the class initialization block), an IllegalArgumentException is thrown; otherwise, the class will simply be skipped if an exception is thrown.

        Enable verbose scanning to see details of any exceptions thrown during classloading, even if ignoreExceptions is false.

        Parameters:
        className - the class to load.
        returnNullIfClassNotFound - If true, null is returned if there was an exception during classloading, otherwise IllegalArgumentException is thrown if a class could not be loaded.
        Returns:
        a reference to the loaded class, or null if the class could not be loaded and ignoreExceptions is true.
        Throws:
        java.lang.IllegalArgumentException - if ignoreExceptions is false, IllegalArgumentException is thrown if there were problems loading or initializing the class. (Note that class initialization on load is disabled by default, you can enable it with ClassGraph#initializeLoadedClasses(true) .) Otherwise exceptions are suppressed, and null is returned if any of these problems occurs.
      • loadClass

        public <T> java.lang.Class<T> loadClass​(java.lang.String className,
                                                java.lang.Class<T> superclassOrInterfaceType,
                                                boolean returnNullIfClassNotFound)
                                         throws java.lang.IllegalArgumentException
        Load a class given a class name. If ignoreExceptions is false, and the class cannot be loaded (due to classloading error, or due to an exception being thrown in the class initialization block), an IllegalArgumentException is thrown; otherwise, the class will simply be skipped if an exception is thrown.

        Enable verbose scanning to see details of any exceptions thrown during classloading, even if ignoreExceptions is false.

        Type Parameters:
        T - the superclass or interface type.
        Parameters:
        className - the class to load.
        superclassOrInterfaceType - The class type to cast the result to.
        returnNullIfClassNotFound - If true, null is returned if there was an exception during classloading, otherwise IllegalArgumentException is thrown if a class could not be loaded.
        Returns:
        a reference to the loaded class, or null if the class could not be loaded and ignoreExceptions is true.
        Throws:
        java.lang.IllegalArgumentException - if ignoreExceptions is false, IllegalArgumentException is thrown if there were problems loading the class, initializing the class, or casting it to the requested type. (Note that class initialization on load is disabled by default, you can enable it with ClassGraph#initializeLoadedClasses(true) .) Otherwise exceptions are suppressed, and null is returned if any of these problems occurs.
      • fromJSON

        public static ScanResult fromJSON​(java.lang.String json)
        Deserialize a ScanResult from previously-serialized JSON.
        Parameters:
        json - The JSON string for the serialized ScanResult.
        Returns:
        The deserialized ScanResult.
      • toJSON

        public java.lang.String toJSON​(int indentWidth)
        Serialize a ScanResult to JSON.
        Parameters:
        indentWidth - If greater than 0, JSON will be formatted (indented), otherwise it will be minified (un-indented).
        Returns:
        This ScanResult, serialized as a JSON string.
      • toJSON

        public java.lang.String toJSON()
        Serialize a ScanResult to minified (un-indented) JSON.
        Returns:
        This ScanResult, serialized as a JSON string.
      • isObtainedFromDeserialization

        public boolean isObtainedFromDeserialization()
        Checks if this ScanResult was obtained from JSON by deserialization, by calling fromJSON(String).
        Returns:
        True if this ScanResult was obtained from JSON by deserialization.
      • close

        public void close()
        Free any temporary files created by extracting jars or files from within jars. Without calling this method, the temporary files created by extracting the inner jars will be removed in a finalizer, called by the garbage collector (or at JVM shutdown). If you don't want to experience long GC pauses, make sure you call this close method when you have finished with the ScanResult.
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
      • closeAll

        public static void closeAll()
        Close all ScanResult instances that have not yet been closed. Note that this will close all open ScanResult instances for any class that uses the classloader that the ScanResult class is cached in -- so if you call this method, you need to ensure that the lifecycle of the classloader matches the lifecycle of your application, or that two concurrent applications don't share the same classloader, otherwise one application might close another application's ScanResult instances while they are still in use.