从任意 .class 文件创建 BCEL JavaClass 对象

发布于 2024-07-06 10:11:22 字数 250 浏览 15 评论 0原文

我正在玩BCEL。 我没有使用它来生成字节码,而是尝试检查现有已编译类的结构。

我需要能够指向硬盘驱动器上任何位置的任意 .class 文件并加载 JavaClass 对象基于此。 理想情况下,我希望避免将给定的类添加到我的类路径中。

I'm playing around with BCEL. I'm not using it to generate bytecode, but instead I'm trying to inspect the structure of existing compiled classes.

I need to be able to point to an arbitrary .class file anywhere on my hard drive and load a JavaClass object based on that. Ideally I'd like to avoid having to add the given class to my classpath.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

时光礼记 2024-07-13 10:11:22

最简单的方法是使用文件名创建一个 ClassParser 并调用 parse()。 或者,您可以使用 SyntheticRepository 并提供类路径(不是您的类路径,IYSWIM)。

The straightforward way is to create a ClassParser with the file name and call parse(). Alternatively you can use SyntheticRepository and supply a classpath (that is not your classpath, IYSWIM).

孤寂小茶 2024-07-13 10:11:22

现有的.class可以类加载到java lang类对象。 然后可以将其转换为BCEL中间javaclass结构。 以下代码可能有帮助:-

Class<?> javaClass1 = null;
javaClass1 = ucl.loadClass("com.sample.Customer");
org.apache.bcel.classfile.JavaClass javaClazz1=org.apache.bcel.Repository.lookupClass(javaClass1);

The existing .class can be class loaded to java lang class object. Then it can be converted into BCEL intermediate javaclass structure. The following code may help:-

Class<?> javaClass1 = null;
javaClass1 = ucl.loadClass("com.sample.Customer");
org.apache.bcel.classfile.JavaClass javaClazz1=org.apache.bcel.Repository.lookupClass(javaClass1);
权谋诡计 2024-07-13 10:11:22
new ClassParser(classfilebytearrayhere).parse()
new ClassParser(classfilebytearrayhere).parse()
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文