I have a tricky question.
My java program is doing in a loop such things:
loop:
read external file with compiled java class into byte[] array.
create a new instance of my own classloader.
setbytes from the readed file to this instance of classloader.
using created classloader create a new instance of object of the class from external file.
call any method of the created object.
And where the problem is.
When I run this program in debug mode it behaves as I expect, so if external file changed classloader loads new version of class and executes new version (if file didn't change it loads old version also of course).
But when I run this program NOT in a debug mode it always executes old version despite the fact that the readed file has changed.
Maybe someone with a deeper knowledge of classloading issues and JVM behaviours can explain me this behaviour.
Here's a simplified version of what happens:
The debug mode is a special mode provided by the JVM, and the classloader works harder to give you the latest version of the resource.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With