title: Why can't load inner class? ClassNotFoundException
body: <p>Why does the following code cause <code>ClassNotFoundException</code>?</p>
  
  <pre><code>public class App02 {
  
      public static class A {
      }
  
      public static void main(String[] args) throws ClassNotFoundException {
  
          try {
              System.out.println("A.class.getCanonicalName() = " + A.class.getCanonicalName());
              Class c = Class.forName("tests.App02.A"); //error on this line
              System.out.println(c.getName());
          }
  
          catch(Exception e) {
              e.printStackTrace();
          }
      }
  }
  </code></pre>
  
  <p>Output:</p>
  
  <pre><code>A.class.getCanonicalName() = tests.App02.A
  java.lang.ClassNotFoundException: tests.App02.A
      at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
      at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
      at java.security.AccessController.doPrivileged(Native Method)
      at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
      at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
      at java.lang.Class.forName0(Native Method)
      at java.lang.Class.forName(Class.java:190)
      at tests.App02.main(App02.java:15)
  </code></pre>