Open
Description
Hi I am trying to initialize ClassScanner
at build time, but it's not able to load classes
Here is my classScanner:
public class ClassScanner {
private static ScanResult scanResult;
static {
scanResult = new ClassGraph().disableModuleScanning() // added for GraalVM
.disableDirScanning() // added for GraalVM
.disableNestedJarScanning() // added for GraalVM
.disableRuntimeInvisibleAnnotations() // added for GraalVM
.addClassLoader(ClassLoader.getSystemClassLoader()) // see
.enableAnnotationInfo().enableMethodInfo().initializeLoadedClasses().scan();
}
public Set<Class> findAllClassesImplementingInterfaces(Class interfaceName) {
Set<Class> classSet = new HashSet<>();
ClassInfoList classInfos = scanResult.getClassesImplementing(interfaceName);
for (ClassInfo clazz : classInfos) {
classSet.add(clazz.loadClass());
}
System.out.println("ScanResult: "+classSet);
return classSet;
}
ClassScanner usage
ClassScanner classScanner =new ClassScanner();
classScanner.findAllClassesImplementingInterfaces(IContext.class)
Here are the logs when I run the native image:
INFO [17:48:16] Default properties successfully read.
(Memory: 2621440 Threads: 2)
INFO [17:48:16] Loaded config from file: .env
(Memory: 3145728 Threads: 2)
INFO [17:48:16] System environment properties successfully read.
(Memory: 3145728 Threads: 2)
scanResult: []
INFO [17:48:16] Initializing dependencies.
(Memory: 3145728 Threads: 2)
INFO [17:48:16] Dependencies successfully created.
(Memory: 3145728 Threads: 2)
INFO [17:48:16] Started Application in 5.042 seconds
(Memory: 3145728 Threads: 2)
INFO [17:48:16] Stopping application
(Memory: 4718592 Threads: 4)
INFO [17:48:16] Application stopped
(Memory: 4718592 Threads: 4)
Here as u can see my scanResult shows empty array
When I run my application locally instead of running native image I get scanResult as
scanResult: [class com.zopsmart.rocket.context.AppContext, class com.zopsmart.rocket.context.ServerContext]
GraalVM version
GraalVM JDK 21