Javeleon offers functionality along these lines; it is available at no cost but not freely redistributable.
The Compiler API (JSR 199) has little to do with code reloading or self-modification, except insofar as a program which wishes to load new bytecode in some way might use 199 to build that bytecode from Java source, rather than using an assembler API like ASM.
Update:
It looks like Javelon is no longer available as it has been acquired by zeroturnaround (creators of JRebel)
From the Javelon homepage:
Note: Javeleon will no longer be available for download as a standalone product.