deboril Geschrieben 24. November 2009 Teilen Geschrieben 24. November 2009 newbie @all, tja - mal wieder eine java.lang.NoClassDefFoundError Exception von der ich nicht einmal ansatzweise erahne wo sie herkommt. ich arbeite mit NetBeans 6.7.1 - das Projekt (nutzt das NetBeans SingleApplicationFramework 1.0.3) lässt sich anstandslos kompilieren, hadert aber bei der Ausführung mit dieser Fehlermeldung: Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: Could not initialize class java.util.Formatter at java.lang.String.format(Unknown Source) at org.jdesktop.application.Application$1.run(Application.java:175) at java.awt.event.InvocationEvent.dispatch(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) Ausgeführt wird die SW sowohl auf Windows als auch unter Ubuntu mit der Runtime: carsten@carmilo:~$ java -version java version "1.6.0_16" Java SE Runtime Environment (build 1.6.0_16-b01) Java HotSpot Client VM (build 14.2-b01, mixed mode, sharing) Die ursprüngliche Fehlermeldung bei der Programmausführung war die hier: Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class java.util.Formatter at java.lang.String.format(String.java:2769) at org.jdesktop.application.Application.getInstance(Application.java:601) at mylocstoragesystem.MyLocStorageSystemLogger.<init>(MyLocStorageSystemLogger.java:18) at mylocstoragesystem.MyLocStorageSystemApp.<clinit>(MyLocStorageSystemApp.java:32) Could not find the main class: mylocstoragesystem.MyLocStorageSystemApp. Program will exit. In der Klasse "mylocstoragesystem.MyLocStorageSystemLogger" auf die sich diese Fehlerausgabe bezieht (Zeile 18) lade ich die Resourcedaten zur Klasse: private ResourceMap resMap = Application.getInstance(mylocstoragesystem.MyLocStorageSystemApp.class).getContext().getResourceMap(MyLocStorageSystemLogger.class); Die Ressourcedatei existiert auch unter "mylocstoragesystem.resourcesMyLocStorageSystemLogger.properties" Kommentiere ich diese Zeil aus ergibt sich bei der Ausfühung die erste Fehlermeldung. Aufgrund dieser Fehlermeldung wo es heisst "at java.lang.String.format(Unknown Source)" vermute ich dass diese Datei nicht gefunden wird. Wenn dem so sein sollte kann ich nicht nachvollziehen warum. Mal abgesehen davon, dass ich seit fast 2 Tagen an dem Problem sitze und z.B. nicht weiss warum denn die java.util.Formatter überhaupt geladen wird. Im gesamten Source gibt es keine Stelle and er ich den Formatter nutzen würde - oder reicht hier schon der Import von java.util.*; um auch den Formatter laden zu wollen? Oder könnte das Problem an ganz anderer Stelle zu suchen sein? Bin für jeden Hinweis dankbar. Vielleicht sehe ich ja auch nur den Wald vor lauter Bäumen nicht ... Danke im Voraus Deboril Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kingofbrain Geschrieben 24. November 2009 Teilen Geschrieben 24. November 2009 Servus! Ich kenne jetzt jdesktop nicht, aber der scheint einen Formatter bei der Initialisierung zu verwenden. Der Fehler ist aber vermutlich woanders. Du erhältst ja als Erklärung im Log folgende Ausgabe: Could not find the main class: mylocstoragesystem.MyLocStorageSystemApp. Program will exit. Ich denke, hier wird erwartet, dass a) die Klasse existiert und im Classpath ist und die Klasse eine main-Methode hat. Ist beides der Fall? Peter Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
deboril Geschrieben 24. November 2009 Autor Teilen Geschrieben 24. November 2009 @Peter - danke für die Antwort @all - da sieht man mal wieder was man von Fehlermeldungen halten kann/darf - es lag schlicht und ergreifend an einer fehlerhaften Variablendeklarion direkt in der MainClass public class MyLocStorageSystemApp extends SingleFrameApplication { /** Declarationen */ private static IRGENDWAS; private static NOCHWASANDERES; ... public static void main(String[] args) { .... } } Das Zauberwort dabei ist static - was ich auch brav bei allen Deklarationen gemacht habe - bis auf einer. Die war nur private - und hatte mit der erwähnten Fehlermeldung so rein gar nichts zu schaffen. Dennoch danke - und ich kann nun wieder produktiv werden LOL Deboril Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kingofbrain Geschrieben 24. November 2009 Teilen Geschrieben 24. November 2009 Was meinst Du denn mit Das Zauberwort dabei ist static - was ich auch brav bei allen Deklarationen gemacht habe - bis auf einer. Die war nur private - und hatte mit der erwähnten Fehlermeldung so rein gar nichts zu schaffen.? Du hast alle verwendeten Methoden in der Klasse statisch gemacht bis auf eine, die statisch sein musste und es nicht war? Dann hat die Fehlermeldung gestimmt, denn dann konnte diese Klasse einfach nicht kompiliert werden und war deshalb nicht vorhanden (NoClassDefFoundError, passt). Oder war Deine main-Methode private oder nicht-statisch? Dann stimmt es auch, weil "Could not find the main class" sagt aus, dass die von Dir angegebene Klasse keine main class ist, weil die korrekt definierte main-Methode fehlt. Peter Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
deboril Geschrieben 24. November 2009 Autor Teilen Geschrieben 24. November 2009 Hi Peter, Du hast alle verwendeten Methoden in der Klasse statisch gemacht bis auf eine, die statisch sein musste und es nicht war? Exact - genau so war es. Hätten alle statisch sein sollen - nur diese eine war es nicht. Was mich nun allerdings ein wenig irritiert ist, dass es beim compilieren keinerlei Fehler oder Warnungen in dieser Rochtung gab, sondern der NoClassDefFoundError erst ebei der Ausführung des Programm's auftauchte. Hättes da nicht schon beim compilieren zumindest eine Warnung geben müssen? Deboril Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kingofbrain Geschrieben 25. November 2009 Teilen Geschrieben 25. November 2009 Ja, Du hättest eine Warnung bzw. einen Compile Error erhalten sollen. Mit welcher IDE arbeitest Du denn? Der sicherste Weg bei so was, ist immer den Classpath zu durchsuchen (manuell im Dateibrowser, sind ja von Dir erzeugte und kompilierte Klassen), ob die .class auch dort liegt, wo sie sein soll. Aber jetzt läufts ja. Peter Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.