首页 > 解决方案 > JVM 运行时动态类生成

问题描述

我需要在运行时获取输入并用它创建一个新类,然后将其加载到 JVM 中运行。

虽然这很快就会变成一个抽象问题,具体答案很少,因此被标记为“不适合 stackoverflow”,但我真的在寻找一些具体的答案。

我已经阅读了大量有关此的资源。我发现的答案范围从操作字节码(甚至不确定我将如何开始)到递归加载 JVM 中的所有类,这实际上似乎不可能,因为这似乎会导致无限循环类型的场景。

目前我正在.java动态编写一个文件,然后获取对系统编译器的引用并使用它来编译为类文件。然后我使用类defineClass()上的方法尝试将其加载到 JVM 中。 ClassLoader

在执行这些步骤之后,我得到了一个NoClassDefError有意义的抛出,我只需要一些关于如何正确地将这个新的、动态编写的类加载到 JVM 中的输入?

为了回应某人评论引起的关注,这是 100% 的实验,仅用于学习目的。这不是会投入生产的东西。

标签: javajvmclassloaderdynamic-class-creation

解决方案


推荐阅读