Warum kann die innere Klasse nicht geladen werden? ClassNotFoundException

9

Warum verursacht der folgende Code ClassNotFoundException ?

%Vor%

Ausgabe:

%Vor%     
Suzan Cioc 27.01.2014, 19:58
quelle

3 Antworten

14

Versuchen Sie Class c = Class.forName("tests.App02$A") . Es ist keine Top-Level-Klasse, verwenden Sie $, um es zu lokalisieren.

    
Paul Hicks 27.01.2014, 20:00
quelle
5

Sie müssen $ verwenden, um auf die geschachtelte Klasse zuzugreifen:

%Vor%

Wenn Sie Ihre Klasse kompilieren, werden Sie feststellen, dass die geschachtelte Klasse wie folgt lautet: App02$A.class , unter Paket tests . Es wäre dann sinnvoller.

    
Rohit Jain 27.01.2014 20:01
quelle
3

Weil Sie einen kanonischen Namen verwenden, aber Sie sollten name ( A.class.getName() ) verwenden.

In Ihrem Fall sollten Sie Class c = Class.forName("tests.App02$A");

verwenden     
Philip Voronov 27.01.2014 20:02
quelle