If I have a inner class declaration such as:
Class A {
public static class B {
}
}
followed by:
Class> impl
A ClassLoader will not load a class, unless it was requested (e.g. using loadClass). While loading a class, a ClassLoader will request referenced classes.
As your class A does not reference A.B, A.B will not be loaded, whether it is static or not. (To be honest, A does reference A.B, but not in a manner causing the ClassLoader to load A.B.)
If you add a field of type A.B or use the type A.B in another way (e.g. as a method return type), it will actually be referenced in A.class and therefore be loaded.