Zum Inhalt springen

java.lang.NoClassDefFoundError: Could not initialize class java.util.Formatter


Empfohlene Beiträge

Geschrieben

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

Geschrieben

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

B) die Klasse eine main-Methode hat.

Ist beides der Fall?

Peter

Geschrieben

@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

Geschrieben

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

Geschrieben

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

Geschrieben

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

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...