java - JVM 运行时动态类生成
问题描述
我需要在运行时获取输入并用它创建一个新类,然后将其加载到 JVM 中运行。
虽然这很快就会变成一个抽象问题,具体答案很少,因此被标记为“不适合 stackoverflow”,但我真的在寻找一些具体的答案。
我已经阅读了大量有关此的资源。我发现的答案范围从操作字节码(甚至不确定我将如何开始)到递归加载 JVM 中的所有类,这实际上似乎不可能,因为这似乎会导致无限循环类型的场景。
目前我正在.java
动态编写一个文件,然后获取对系统编译器的引用并使用它来编译为类文件。然后我使用类defineClass()
上的方法尝试将其加载到 JVM 中。 ClassLoader
在执行这些步骤之后,我得到了一个NoClassDefError
有意义的抛出,我只需要一些关于如何正确地将这个新的、动态编写的类加载到 JVM 中的输入?
为了回应某人评论引起的关注,这是 100% 的实验,仅用于学习目的。这不是会投入生产的东西。
解决方案
推荐阅读
- php - php mysql仅在if语句中有重复项的情况下更新列
- ros - ROS中use_sim_time的效果
- reactjs - 如何使用 React 测试库测试 iframe 是否存在?
- css - 将两个网格与任何一个网格最宽的项目对齐?
- flutter - Flutter中使用SFCartesian自定义水平条形图
- tcp - 删除 ip 标头并检查 tcp 标头是否有效——在网络堆栈中
- typescript - 打字稿中的类型对象是什么?
- android - 移动聊天应用程序中使用什么技术来接收消息?
- android-studio - Android Java 上的倒数计时器
- c# - 在函数中使用时,在其余代码中执行 return 语句