3
//bytecode of <init>
0:    aload_0
1:    invokespecial java.lang.Object.<init> ()V (8)
4:    return
//bytecode of <main>
0:    getstatic     java.lang.System.out Ljava/io/PrintStream; (16)
3:    ldc       "Hello World" (22)
5:    invokevirtual java.io.PrintStream.println (Ljava/lang/String;)V (24)
8:    return

以上是 的字节码:

public class Hi {
  public static void main(String[] args) {
    System.out.println("Hello World");
  }
}

如果我只有字节码,我该如何运行它?我可以吗?字节码文件的扩展名是什么?。上课?

4

1 回答 1

1

你可以使用 Jasmin 编译字节码,它有自己的格式。您需要整个类的字节码,而不仅仅是方法的主体。

获得字节码后,您可以将其加载到自定义类加载器中,或在当前类加载器上调用 defineClass 并运行它。

您可能会发现使用 Compiler API 或 BeanShell 从源代码编译和运行更容易。

于 2012-09-06T10:42:27.453 回答