gpt4 book ai didi

Java:在运行时从同一 JVM 中获取类的字节码

转载 作者:搜寻专家 更新时间:2023-10-30 21:10:00 25 4
gpt4 key购买 nike

相关:Is there a way to obtain the bytecode for a class at runtime?

我正在为 Clojure 添加持久性,我终于准备好添加函数了。在 Clojure 中,函数被字节编译为具有调用方法(以及其他方法)的类。这样,功能是一流的。为了使这些持久化,我需要序列化和反序列化这些类。如何在无法访问 .class 文件的情况下获取类的字节码?

如果我弄错了,请纠正我,但使用代理需要生成一个单独的 VM,该代理连接到第一个 VM。我需要从同一个 VM 执行此操作。

仅仅使用Serializable来设置和获取Class对象是不够的。反序列化后,我需要加载该类,并且在后续的 VM 实例中,可能会发生类名冲突。我需要修改字节码以在反序列化/类加载时将类重命名为唯一的名称。

最佳答案

您可以编写自己的 ClassLoader 并破解一个在加载类时记录字节码的方案。

你需要覆盖findClass来自己找到类文件,将它加载到内存中,将数据保存在某个地方(用于以后序列化),然后调用defineClass来定义JVM 中的那个类。

关于Java:在运行时从同一 JVM 中获取类的字节码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4130903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com