This is a bug in Module.getXXXAnnotation implementation where it accidentally locates a module-info.class on the class path (say if someone deploys a modular JAR on the class path). An oversight in the original implementation. Simple fix to override loadClass to do the right thing. I've kept the changes as minimal as possible as this is a change that may need to be back-ported. The webrev with the change and updated test is here:
http://cr.openjdk.java.net/~alanb/8241770/webrev/ Thanks, Alan