Why can't load inner class? ClassNotFoundException
classloader, classnotfoundexception, java
Solution
Try `Class c = Class.forName("tests.App02$A")`. It's not a top-level class, so use $ to locate it.
Problem
Why does the following code cause `ClassNotFoundException`? ``` 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(); } } } ``` Output: ``` 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) ```