首页 > 解决方案 > 如何在 Java 运行时生成现有类的字节码?

问题描述

如何在 Java 运行时生成现有类的字节码?

我现有的课程是说Foo.java

public class Foo {

    public String saySomething() {
        return "Hello World";
    }
}

现在我想生成这个现有类的字节码,Foo.java并可能在另一个 JVM 实例中使用它。请理解我没有在运行时创建一个类,因为我已经有一个名为Foo.java. 打开任何库,如 ASM 或 ByteBuddy 等。

标签: javabyte-buddy

解决方案


你不需要一个库,任何类文件都只是一个资源,就像任何其他可以通过Foo.class.getResource("Foo.class"). 您可以像读取任何其他资源一样打开此资源的流并读取其字节。

如果您已经在使用 Byte Buddy,则可以通过以下方式获取字节:ClassFileLocator.ForClassLoader.read(Foo.class)但如果您只需要这些,那么使用库将是一种矫枉过正。


推荐阅读