这是java类图api的有效使用吗?

这是java类图api的有效使用吗?,java,classgraph,Java,Classgraph,使用编译'io.github.classgraph:classgraph:4.8.65' 爪哇8 ScanResult scanResult = new ClassGraph().enableAllInfo() .whitelistPackages("abc1") .whitelistPackages("abc2") .whitelistPackages("java

使用编译'io.github.classgraph:classgraph:4.8.65'

爪哇8

ScanResult scanResult = 
    new ClassGraph().enableAllInfo()
                    .whitelistPackages("abc1")
                    .whitelistPackages("abc2")
                    .whitelistPackages("java")
                    .scan();
当我遇到来自包abc1或abc2的类的ClassInfo对象时,它们能够引用java.util.HashMap之类的东西,我在FieldInfo中看到它们

但当我继续执行scanResult.getClassInfo(“java.util.HashMap”)时,它返回null。 (abc1或abc2包中其他类的以下字段信息会返回更多ClassInfo对象)

我的问题是,我认为我能够通过上面所示的ClassGraph方法链接将ClassInfo对象获取到java jre类,这是正确的吗

添加了这个失败的测试,它只打印一个类,而不是预期的几十个:

package abc;

import io.github.classgraph.ScanResult;
import io.github.classgraph.ClassGraph;
import io.github.classgraph.ClassInfo;

import java.util.*;
import java.io.*;

import java.util.function.*;

import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;

@SpringJUnitConfig
@SpringBootTest(classes = {})
public class ExamplesSpec {

        @org.junit.jupiter.api.Test
        @org.junit.jupiter.api.DisplayName(value="test_for_built_in_java_jre_classes")
        public void test_on_line_42() throws Exception {

            System.out.println("test_for_built_in_java_jre_classes");
            ClassInfo found = null;
            try (
                ScanResult result = new ClassGraph().enableAllInfo().whitelistPackages("java.util").scan()
            ) {
                System.out.println("here all the classes....");
                for( ClassInfo item : result.getAllClasses()) {
                    System.out.println("here classinfo: " + item);
                }
                found = result.getClassInfo("java.util.HashMap");
            }
            assert found != null;
        }
}
找到的唯一类是:

这里classinfo:public类java.util.zip.VFSZipFile实现java.util.zip.ZipConstants

找到了答案

在类图的设置中,为了扫描jre提供的类,您需要将以下内容添加到方法链接中:

.enableSystemJarsAndModules()

例如:

    new ClassGraph().enableAllInfo()
                    .whitelistPackages("abc1")
                    .whitelistPackages("abc2")
                    .whitelistPackages("java")
                    .enableSystemJarsAndModules()
                    .scan();
以下文件对此进行了详细说明: