java - 如何使用 Javassist 从源代码加载类?

标签 java javassist javaloader

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

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

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

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

最佳答案

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

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

关于java - 如何使用 Javassist 从源代码加载类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7985290/

相关文章:

Java新手: How to use Java Agent From the Command Line for Instrumentation

BlackBerry 屏幕截图实用程序 - 从台式计算机

java - 如何在 Coldfusion8 中使用 javaloader 设置 java 库?

java - 如何使用 graphhopper 进行自行车道的 GPS map 匹配

java - 运行 bash 脚本以执行 Java 代码时,日志输出显示在 Jenkins 中

java - Scala 的类和对象的问题

java - 使用 JavaLoader 时 Coldfusion 9 中缺少包

java - 在没有 HDFS 的情况下执行 Hadoop 代码

java - 使用 Javassist 编译的类的类路径

检测 eclipse rcp 应用程序时出现 java.lang.ClassNotFoundException