【问题标题】:How to load a class from its source code using Javassist?如何使用 Javassist 从其源代码加载一个类?
【发布时间】:2011-11-02 18:16:40
【问题描述】:

我在输入流中有一个类的完整源代码。是否可以使用 Javassist 为此类创建一个新的CtClass 对象?。

我知道使用类的名称可以创建一个新的CtClass 对象,例如:

ClassPool.getDefault().makeClass("name_of_the_new_class");

但就我而言,我事先并不知道类的名称,而只是知道其完整的源代码(当然我可以通过解析源代码得到类的名称,但请不要告诉我这是解决方案的一部分:-))

【问题讨论】:

    标签: java javassist javaloader


    【解决方案1】:

    如果您想即时编译源文件,请查看工具 API 以及 ToolProvider.getSystemJavaCompiler()。从那里您可以从源代码编译 .class 文件,并在需要时使用类加载器加载它们。

    您还可以使用 Javassist 从创建的类文件的字节中创建一个 CtClass,使用 ByteArrayClassPath 和一个新的 ClassPool。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-02
      • 1970-01-01
      • 2023-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-21
      相关资源
      最近更新 更多