读取Java .class文件
-
24-10-2019 - |
题
我想编写一个工具,该工具使用编译 .class
文件作为输入。具体来说,我想从此类文件中阅读:
- 方法,带注释
- 方法参数,带注释
输入类文件可能会参考工具类路径中未使用的几种类型。没关系,我不需要对它们做任何事情,只需要阅读完全合格的类型名称作为字符串即可。我确实需要从注释中获取一些信息,但它们将在工具的类路径中。
我可以将其用于此目的的库吗?如果API有点像反射API,那就太好了,但不一定是。
解决方案
ASM http://asm.ow2.org/ 允许您从文件/输入流读取类,而无需加载该类。它使您可以看到在运行时未加载的注释。它也可以用于修改类字节代码/注释/方法等。
其他提示
这 Javap工具 JDK随附可能已经完成了您的追求。
你需要看两件事 Reflection API
和 Decompiler
我认为您可以使用春季扫描。
ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(true);
String basePackage = "org/springframework/samples/petclinic";
Set<BeanDefinition> components = provider.findCandidateComponents(basePackage);
for (BeanDefinition component : components) {
System.out.printf("Component: %s\n", component.getBeanClassName());
}
有关更多信息,您可以查看春季 文档
我在用着 ASM 用于找出所有方法。
如果您可以访问生成.class文件,则 反射API 应该能够提供帮助。
不隶属于 StackOverflow