Dynamically generated code, e.g. proxy classes and aspect pointcuts being inserted into code and then recompiled by the JIT.
And even "just" dynamically loading a library requires recompilation because it will invalidate optimizer assumptions such as devirtualization (part of class hierarchy analysis in hotspot).