这是java类图api的有效使用吗?
使用编译'io.github.classgraph:classgraph:4.8.65' 爪哇8这是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
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();
以下文件对此进行了详细说明: