以编程方式分析 jar 文件
我需要以编程方式计算给定 jar 文件中已编译类、接口和枚举的数量(因此我需要三个单独的数字)。哪个 API 可以帮助我? (我不能使用第三方库。)
我已经尝试过相当棘手的方案,这似乎并不总是正确的。也就是说,我将每个 ZipEntry 读入一个 byte[] 中,然后将结果提供给我的自定义类加载器,该类加载器扩展了标准 CalssLoader 并将这个 byte[] 发送到 ClassLoader.defineClass (这是受保护的,无法直接从应用程序代码调用)。完整代码位于Pastebin。
I need to count the number of compiled classes, interfaces and enums in a given jar file programmatically (so I need three separate numbers). Which API would help me? (I can't use third party libraries.)
I've already tried quite tricky scheme which seems not always correct. Namely, I read each ZipEntry into a byte[] and then feed the result to my custom class loader which extends standard CalssLoader and just sends this byte[] to ClassLoader.defineClass (which is protect and couldn't be called from application code directly). Full code is on the Pastebin.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
jar 文件是具有特定模式的 zip 文件。
您可以使用 ZipFile 和 ZipEntry 或其子类 JarFile 和 JarEntry。
此代码(自定义类加载器的方法)将返回一个 Map,其中包含您需要的每种“类”类型的数组。
A jar file is a zip file with a specific pattern.
You may use a ZipFile and a ZipEntry or their children classes JarFile and JarEntry.
This code (a method of a custom classloader) will return a Map with arrays of each type of "class" you need.