问题:我们使用ByteBuddy生成类,将其加载,并且一时需要添加/删除字段,而无需重新启动应用程序。
如果我理解正确,在Java中将无法修改已经加载到类加载器中的类的架构(添加字段/方法)。
我的问题:作为一种解决方法,当发生这样的冲突时,创建一个新的类加载器是否可能/合理-将所有生成的类加载到新的类加载器中并关闭旧的类加载器?
谢谢。
[OpenJDK的VM版本支持这种转换,Dynamic Code Evolution VM。
对于常规VM,您可以在新的类加载器中加载类。但是,在这种情况下,以前的实例都不会是此更改后的类的实例。您将需要重新创建所有实例。如果这对您来说可行,则可以选择。