The problem is that requires a closed world approach, or constrained usage of reflection.
Yes there have been AOT compilers since around 2000, however you will notice that they target specific deployment cases, and also offer JIT caches in alternative.
Actually that is also how Android rebooted their AOT efforts in version 7.
You can see it in GraalVM and native image as well.