Prüfen, ob es eine Klasse gibt

roxX0r

Mitglied
Hallo,

ich möchte in meinem Programm das jGoodies Paket "looks" verwenden, um die LookAndFeels davon gebrauchen zu können. Wenn ich die looks-2.2.1.jar mit meinem Tool ausliefere ist alles kein Problem, dann ist die Jar ja im Classpath und ich kann ganz einfach
Code:
 UIManager.setLookAndFeel(new WindowsLookAndFeel());
aufrufen.

Durch ein paar Umstände, kann es aber passieren, dass sie User diese jar Datei nicht haben und dann möchte ich, dass ein anderenn LAF geladen wird. Ich hab es bis jetzt über diesen Weg gemacht:
Prüfen, ob es die Datei "looks-2.2.1.jar" gibt, wenn nein, dann ein standard LAF einsetzen. Falls es die Datei gibt, dann den Code siehe oben aufrufen.
So das Problem bei der Sache ist aber, dass wenn es die Datei nicht gibt, er eine "java.lang.NoClassDefFoundError: com/jgoodies/looks/windows/WindowsLookAndFeel" wirft, weil er die Klasse "WindowsLookAndFeel()" natürlich nicht findet. Aber ich dachte, weil der Block ja eh nicht ausgeführt wird (die Datei ist ja nicht da) wäre das nicht weiter schlimm. Leider wird das Programm dann beendet und nicht weitergeführt.

Jemand eine Idee, wie ich das lösen kann?

Am besten wäre sowas wie:

if ( gibt es die Klasse) then new Klasse;
 
Hi,

so auf die schnelle:
Class.forName wirft eine ClassNotFoundException die du fangen kannst.

Code:
		try {
			Class a = Class.forName("my.class.which.is.unavaiable.Sometimes");
                        // If-Zweig
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
                        // else-Zweig
		}
 
Zurück