我有一个棘手的问题。
我的java程序正在循环中做这样的事情:
环形:
将已编译的 java 类的外部文件读入 byte[] 数组。
创建我自己的类加载器的新实例。
setbytes 从读取的文件到这个类加载器实例。
使用创建的类加载器从外部文件创建类对象的新实例。
调用创建对象的任何方法。
问题出在哪里。
当我在调试模式下运行这个程序时,它的行为与我预期的一样,所以如果外部文件更改类加载器加载新版本的类并执行新版本(如果文件没有改变它当然也会加载旧版本)。
但是当我不在调试模式下运行这个程序时,它总是执行旧版本,尽管读取的文件已经改变。
也许对类加载问题和 JVM 行为有更深入了解的人可以向我解释这种行为。