# java.lang.ExceptionInInitializerError



## hansi (21. Mrz 2006)

Hallo Leute,
ich habe so eine Funktion:


```
private static final void getComponent(String className)
{
try
{
Class componentClass = Class.forName(className);
}
catch (ClassNotFoundException fe)
{

}
```

Aber ich bekomme folgende Fehlermeldungen:
java.lang.ExceptionInInitializerError
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:141)


Der springt in catch Block auch nicht rein.Warum?Wo mache ich falsch?
Danke

Edit sebastian: Doppelpost gelöscht, Code-Tags eingefügt


----------



## KSG9|sebastian (21. Mrz 2006)

Weil du eine ClassNotFoundException abfängst aber eine java.lang.ExceptionInInitializerError geworfen wird.


----------



## hansi (21. Mrz 2006)

Was heisst dann das:

java.lang.ExceptionInInitializerError. Auf welche Fehler deutet es an? Was muss ich dafür machen?

Danke


----------



## Murray (21. Mrz 2006)

Siehe java.sun.com/j2se/1.5.0/docs/api/java/lang/ExceptionInInitializerError.html

In der statischen Initialisierung der Klasse, die mit Class.forName geladen wird, tritt ein Fehler auf. Um zu sehen, was genau da passiert, kannst diesen Fehler auch mit einem eigenen "catch"-Statement abfangen. Wenn Du mit dem JDK 1.4 (oder neuer) arbeitest, dann liefert printStackTrace() auch auch den eigentlichen Fehler. 


```
try {
  Class componentClass = Class.forName(className);
} catch (ClassNotFoundException clsNotFound) {
  clsNotFound.printStackTrace();
} catch (ExceptionInInitializerError exInInit) {
  exInInitprintStackTrace();
}
```

Wenn Du in dieser Art mit Class.forName() arbeitest, dann musst Du auch noch mit anderen Fehlern rechnen (z.B. java.lang.IncompatibleClassChangeError).


----------



## la hackl (21. Mrz 2006)

am besten geht das mit

private static final void getComponent(String className) 
{ 
try 
{ 
Class componentClass = Class.forName(className); 
} 
catch (Exception e) 
{ 

}


----------



## Murray (21. Mrz 2006)

la hackl hat gesagt.:
			
		

> am besten geht das mit
> 
> ```
> private static final void getComponent(String className)  {
> ...



Leider nicht: ExceptionInInitializerError ist eben keine Exception, sondern ein Error. Wenn man Errors und Exceptions gemeinsam abfangen wollte, dann müsste man schon die gemeinsame Basis Throwable abfangen; das ist aber nicht unbedingt guter Stil.


----------



## La Hackl (22. Mrz 2006)

Murray hat gesagt.:
			
		

> la hackl hat gesagt.:
> 
> 
> 
> ...


----------



## La Hackl (22. Mrz 2006)

ups hab ganz übersehen dass das ein error ist


----------

