we are using a custom classloader based on UrlClassLoader and for some reason in the past we needed to add jar urls in the format of
jar:file:path/to/example.jar!/
this works fine with UrlClassLoader, but ClassGraph stumbles over it with an error (see below). but actually there is no reason, as the notation is fine and simply adds 'file root inside of jar X' to the classpath. also Classgraph has no issue to filter the ClassPathElement but then refuses to scan the same later.
ClassGraph().verbose().scan() log shortened
Jan 09, 2022 7:16:52 PM nonapi.io.github.classgraph.utils.LogNode flush
INFO: 2022-01-09T19:16:51.104+0100 ClassGraph ClassGraph version 4.8.138
2022-01-09T19:16:51.104+0100 ClassGraph Operating system: Windows 7 6.1 amd64
2022-01-09T19:16:51.104+0100 ClassGraph Java version: 1.8.0_242 / 1.8.0_242-b08 (AdoptOpenJDK)
2022-01-09T19:16:51.104+0100 ClassGraph Java home: E:\Programme\jdk8u242-b08-adoptopenjdk-x64\jre
2022-01-09T19:16:51.137+0100 ClassGraph JRE rt.jar:
2022-01-09T19:16:51.137+0100 ClassGraph -- E:/Programme/jdk8u242-b08-adoptopenjdk-x64/jre/lib/rt.jar
2022-01-09T19:16:51.218+0100 ClassGraph ScanSpec:
2022-01-09T19:16:51.218+0100 ClassGraph -- packageAcceptReject:
2022-01-09T19:16:51.218+0100 ClassGraph -- packagePrefixAcceptReject:
2022-01-09T19:16:51.218+0100 ClassGraph -- pathAcceptReject:
2022-01-09T19:16:51.218+0100 ClassGraph -- pathPrefixAcceptReject:
2022-01-09T19:16:51.218+0100 ClassGraph -- classAcceptReject:
2022-01-09T19:16:51.218+0100 ClassGraph -- classfilePathAcceptReject:
2022-01-09T19:16:51.218+0100 ClassGraph -- classPackageAcceptReject:
2022-01-09T19:16:51.218+0100 ClassGraph -- classPackagePathAcceptReject:
2022-01-09T19:16:51.218+0100 ClassGraph -- moduleAcceptReject:
2022-01-09T19:16:51.218+0100 ClassGraph -- jarAcceptReject:
2022-01-09T19:16:51.218+0100 ClassGraph -- classpathElementResourcePathAcceptReject:
2022-01-09T19:16:51.218+0100 ClassGraph -- libOrExtJarAcceptReject:
2022-01-09T19:16:51.219+0100 ClassGraph -- scanJars: true
2022-01-09T19:16:51.219+0100 ClassGraph -- scanNestedJars: true
2022-01-09T19:16:51.219+0100 ClassGraph -- scanDirs: true
2022-01-09T19:16:51.219+0100 ClassGraph -- scanModules: true
2022-01-09T19:16:51.219+0100 ClassGraph -- enableClassInfo: true
2022-01-09T19:16:51.219+0100 ClassGraph -- enableFieldInfo: true
2022-01-09T19:16:51.219+0100 ClassGraph -- enableMethodInfo: true
2022-01-09T19:16:51.219+0100 ClassGraph -- enableAnnotationInfo: true
2022-01-09T19:16:51.219+0100 ClassGraph -- enableStaticFinalFieldConstantInitializerValues: true
2022-01-09T19:16:51.219+0100 ClassGraph -- enableInterClassDependencies: false
2022-01-09T19:16:51.219+0100 ClassGraph -- enableExternalClasses: false
2022-01-09T19:16:51.220+0100 ClassGraph -- enableSystemJarsAndModules: false
2022-01-09T19:16:51.220+0100 ClassGraph -- ignoreClassVisibility: true
2022-01-09T19:16:51.220+0100 ClassGraph -- ignoreFieldVisibility: true
2022-01-09T19:16:51.220+0100 ClassGraph -- ignoreMethodVisibility: true
2022-01-09T19:16:51.220+0100 ClassGraph -- disableRuntimeInvisibleAnnotations: false
2022-01-09T19:16:51.220+0100 ClassGraph -- extendScanningUpwardsToExternalClasses: true
2022-01-09T19:16:51.220+0100 ClassGraph -- allowedURLSchemes: null
2022-01-09T19:16:51.220+0100 ClassGraph -- addedClassLoaders: null
2022-01-09T19:16:51.220+0100 ClassGraph -- overrideClassLoaders: null
2022-01-09T19:16:51.220+0100 ClassGraph -- addedModuleLayers: null
2022-01-09T19:16:51.220+0100 ClassGraph -- overrideModuleLayers: null
2022-01-09T19:16:51.220+0100 ClassGraph -- overrideClasspath: null
2022-01-09T19:16:51.220+0100 ClassGraph -- classpathElementFilters: [es.unex.sextante.openjump.Finder$1@d3e3085]
2022-01-09T19:16:51.220+0100 ClassGraph -- initializeLoadedClasses: false
2022-01-09T19:16:51.220+0100 ClassGraph -- removeTemporaryFilesAfterScan: false
2022-01-09T19:16:51.220+0100 ClassGraph -- ignoreParentClassLoaders: false
2022-01-09T19:16:51.220+0100 ClassGraph -- ignoreParentModuleLayers: false
2022-01-09T19:16:51.220+0100 ClassGraph -- modulePathInfo:
2022-01-09T19:16:51.221+0100 ClassGraph -- maxBufferedJarRAMSize: 67108864
2022-01-09T19:16:51.221+0100 ClassGraph -- enableMemoryMapping: false
2022-01-09T19:16:51.221+0100 ClassGraph Number of worker threads: 8
2022-01-09T19:16:51.278+0100 ClassGraph Finding classpath
2022-01-09T19:16:51.283+0100 ClassGraph -- Finding classpath and modules
2022-01-09T19:16:51.319+0100 ClassGraph ---- Scanning of system modules is not enabled
2022-01-09T19:16:51.319+0100 ClassGraph ---- Non-system modules found:
2022-01-09T19:16:51.319+0100 ClassGraph ------ [None]
2022-01-09T19:16:51.489+0100 ClassGraph ---- Found ClassLoaders:
2022-01-09T19:16:51.489+0100 ClassGraph ------ com.vividsolutions.jump.workbench.plugin.PlugInClassLoader
2022-01-09T19:16:51.490+0100 ClassGraph ---- ClassLoaderHandlers:
2022-01-09T19:16:51.490+0100 ClassGraph ------ nonapi.io.github.classgraph.classloaderhandler.AntClassLoaderHandler
2022-01-09T19:16:51.490+0100 ClassGraph ------ nonapi.io.github.classgraph.classloaderhandler.EquinoxClassLoaderHandler
2022-01-09T19:16:51.490+0100 ClassGraph ------ nonapi.io.github.classgraph.classloaderhandler.EquinoxContextFinderClassLoaderHandler
2022-01-09T19:16:51.490+0100 ClassGraph ------ nonapi.io.github.classgraph.classloaderhandler.FelixClassLoaderHandler
2022-01-09T19:16:51.490+0100 ClassGraph ------ nonapi.io.github.classgraph.classloaderhandler.JBossClassLoaderHandler
2022-01-09T19:16:51.490+0100 ClassGraph ------ nonapi.io.github.classgraph.classloaderhandler.WeblogicClassLoaderHandler
2022-01-09T19:16:51.490+0100 ClassGraph ------ nonapi.io.github.classgraph.classloaderhandler.WebsphereLibertyClassLoaderHandler
2022-01-09T19:16:51.490+0100 ClassGraph ------ nonapi.io.github.classgraph.classloaderhandler.WebsphereTraditionalClassLoaderHandler
2022-01-09T19:16:51.490+0100 ClassGraph ------ nonapi.io.github.classgraph.classloaderhandler.OSGiDefaultClassLoaderHandler
2022-01-09T19:16:51.490+0100 ClassGraph ------ nonapi.io.github.classgraph.classloaderhandler.SpringBootRestartClassLoaderHandler
2022-01-09T19:16:51.490+0100 ClassGraph ------ nonapi.io.github.classgraph.classloaderhandler.TomcatWebappClassLoaderBaseHandler
2022-01-09T19:16:51.490+0100 ClassGraph ------ nonapi.io.github.classgraph.classloaderhandler.CxfContainerClassLoaderHandler
2022-01-09T19:16:51.490+0100 ClassGraph ------ nonapi.io.github.classgraph.classloaderhandler.PlexusClassWorldsClassRealmClassLoaderHandler
2022-01-09T19:16:51.490+0100 ClassGraph ------ nonapi.io.github.classgraph.classloaderhandler.QuarkusClassLoaderHandler
2022-01-09T19:16:51.490+0100 ClassGraph ------ nonapi.io.github.classgraph.classloaderhandler.UnoOneJarClassLoaderHandler
2022-01-09T19:16:51.490+0100 ClassGraph ------ nonapi.io.github.classgraph.classloaderhandler.ParentLastDelegationOrderTestClassLoaderHandler
2022-01-09T19:16:51.490+0100 ClassGraph ------ nonapi.io.github.classgraph.classloaderhandler.JPMSClassLoaderHandler
2022-01-09T19:16:51.490+0100 ClassGraph ------ nonapi.io.github.classgraph.classloaderhandler.URLClassLoaderHandler
2022-01-09T19:16:51.490+0100 ClassGraph ------ nonapi.io.github.classgraph.classloaderhandler.ClassGraphClassLoaderHandler
2022-01-09T19:16:51.490+0100 ClassGraph ---- Finding unique classloaders in delegation order
2022-01-09T19:16:51.492+0100 ClassGraph ---- Obtaining URLs from classloaders in delegation order
2022-01-09T19:16:51.493+0100 ClassGraph ------ Classloader sun.misc.Launcher$ExtClassLoader is handled by nonapi.io.github.classgraph.classloaderhandler.URLClassLoaderHandler
2022-01-09T19:16:51.498+0100 ClassGraph -------- Classpath element did not match filter criterion, skipping: E:/Programme/jdk8u242-b08-adoptopenjdk-x64/jre/lib/ext/access-bridge-64.jar
SNIP
2022-01-09T19:16:51.526+0100 ClassGraph -------- Found classpath element: D:/workspace-2021.03/sextante-extension/sextante-openjump/target/sextante-openjump-2.2.0-SNAPSHOT/sextante-openjump-2.2.0-SNAPSHOT/sextante-algorithm-2.2.0-SNAPSHOT.jar
2022-01-09T19:16:51.526+0100 ClassGraph -------- Found classpath element: D:/workspace-2021.03/sextante-extension/sextante-openjump/target/sextante-openjump-2.2.0-SNAPSHOT/sextante-openjump-2.2.0-SNAPSHOT/sextante-core-2.2.0-SNAPSHOT.jar
2022-01-09T19:16:51.526+0100 ClassGraph -------- Found classpath element: D:/workspace-2021.03/sextante-extension/sextante-openjump/target/sextante-openjump-2.2.0-SNAPSHOT/sextante-openjump-2.2.0-SNAPSHOT/sextante-gui-2.2.0-SNAPSHOT.jar
2022-01-09T19:16:51.526+0100 ClassGraph -------- Found classpath element: D:/workspace-2021.03/sextante-extension/sextante-openjump/target/sextante-openjump-2.2.0-SNAPSHOT/sextante-openjump-2.2.0-SNAPSHOT/sextante-math-2.2.0-SNAPSHOT.jar
SNIP
2022-01-09T19:16:51.561+0100 ClassGraph Opening classpath elements (took 0.079626 sec)
2022-01-09T19:16:51.603+0100 ClassGraph -- [com.vividsolutions.jump.workbench.plugin.PlugInClassLoader@659e0bfd]
2022-01-09T19:16:51.603+0100 ClassGraph -- Skipping invalid classpath element jar:file:D:\workspace-2021.03\sextante-extension\sextante-openjump\target\sextante-openjump-2.2.0-SNAPSHOT\sextante-openjump-2.2.0-SNAPSHOT\sextante-gui-2.2.0-SNAPSHOT.jar!/ : java.io.IOException: Cannot get classpath element for classpath entry jar:file:D:\workspace-2021.03\sextante-extension\sextante-openjump\target\sextante-openjump-2.2.0-SNAPSHOT\sextante-openjump-2.2.0-SNAPSHOT\sextante-gui-2.2.0-SNAPSHOT.jar!/ [com.vividsolutions.jump.workbench.plugin.PlugInClassLoader@659e0bfd]
2022-01-09T19:16:51.603+0100 ClassGraph -- Skipping invalid classpath element jar:file:D:\workspace-2021.03\sextante-extension\sextante-openjump\target\sextante-openjump-2.2.0-SNAPSHOT\sextante-openjump-2.2.0-SNAPSHOT\sextante-algorithm-2.2.0-SNAPSHOT.jar!/ : java.io.IOException: Cannot get classpath element for classpath entry jar:file:D:\workspace-2021.03\sextante-extension\sextante-openjump\target\sextante-openjump-2.2.0-SNAPSHOT\sextante-openjump-2.2.0-SNAPSHOT\sextante-algorithm-2.2.0-SNAPSHOT.jar!/ [com.vividsolutions.jump.workbench.plugin.PlugInClassLoader@659e0bfd]
2022-01-09T19:16:51.603+0100 ClassGraph -- Skipping invalid classpath element jar:file:D:\workspace-2021.03\sextante-extension\sextante-openjump\target\sextante-openjump-2.2.0-SNAPSHOT\sextante-openjump-2.2.0-SNAPSHOT\sextante-core-2.2.0-SNAPSHOT.jar!/ : java.io.IOException: Cannot get classpath element for classpath entry jar:file:D:\workspace-2021.03\sextante-extension\sextante-openjump\target\sextante-openjump-2.2.0-SNAPSHOT\sextante-openjump-2.2.0-SNAPSHOT\sextante-core-2.2.0-SNAPSHOT.jar!/ [com.vividsolutions.jump.workbench.plugin.PlugInClassLoader@659e0bfd]
we are using a custom classloader based on UrlClassLoader and for some reason in the past we needed to add jar urls in the format of
this works fine with UrlClassLoader, but ClassGraph stumbles over it with an error (see below). but actually there is no reason, as the notation is fine and simply adds 'file root inside of jar X' to the classpath. also Classgraph has no issue to filter the ClassPathElement but then refuses to scan the same later.
ClassGraph().verbose().scan() log shortened