Netbeans – NoClassDefFoundError – GroupLayout

Netbeans ist eine – wie ich finde – sehr gute Entwicklungsumgebung. Ich setze sie für die Entwicklung von Java Programmen und inzwischen auch für die Bearbeitung von PHP Files ein. Gerade jemanden der Java GUIs lieber graphisch erstellt und nicht mühsam programmieren möchte, findet in Netbeans Matisse GUI Builder ein recht praktisches Tool. Am Ende ist es natürlich eine reine Geschmackssache, welche IDE man verwenden möchte und wie man seine GUIs erstellt, alle haben sie ihre Vor- und Nachteile. Um einen dieser Nachteile von Netbeans, der mich heute schier in den Wahnsinn getrieben hat, soll es in diesem Beitrag gehen.

Problem: Man hat schön brav seine GUI in Matisse als Free Design Layout erstellt. Das Programm lief auch fantastisch auf dem Entwickler Rechner (zumindest in der Netbeans IDE) und ist jetzt bereit ausgerollt (“deployed”) zu werden. Doch hups, was ist das!?

Exception in thread “main” java.lang.NoClassDefFoundError: javax/swing/GroupLayout$Group

Diese Fehlermeldung taucht auf jedem Rechner auf, auf dem man das Programm starten möchte. In der IDE läuft es wunderbar, aber auf dem Rechner des Kunden …. no way!
Eine Recherche im Internet führt hoffentlich sehr schnell auf Netbeans Wiki mit dem Artikel “FAQ Deploying Matisse Based Projects1  und Suns Netbeans Support Weblog und hier im Speziellen auf den Artikel “Target JDK”2. Die Lösung zum GroupLayout Problem findet ihr dort. Hat man die GUI jedoch bereits früher einmal für JDK 1.5 erstellt (z.B. in Netbeans 5.5), so ist die Lösung nicht ganz ausreichend. Zumindest in meinem Fall musste noch ein wenig mehr gemacht werden. Hier also die Komplettlösung …. möge sie einige Kollegen vor einer Stunde Fehlersuche bewahren:

  1. Layout Generation Style unter “Tools | Options | Advanced Options | Options | Editing | GUI Builder” auf “Swing Layout Extensions Library” setzen.
  2. Im Projektordner mit der rechten Maustaste auf  “Libraries” klicken und dann unter”Add Library” die Swing Layout Extensions” Library dem Projekt zufügen.
  3. Danach die Klasse mit der Form anklicken. Im Inspector – üblicherweise links unten – rechte Maustaste auf Form und dort Properties auswählen. Hier unter CodeGeneration – Layout Generation Style die “Swing Layout Extension Library” auswählen. Den ganzen Vorgang bei Bedarf für alle Forms die man erzeugt hat wiederholen.
  4. Jetzt mit F11 das Main Project neu erstellen und neu ausrollen.

Hier noch zwei Screenshots, damit die entsprechenden Punkte aus Schritt 3 auch gefunden werden.

  1. http://wiki.netbeans.org/FaqDeployingMatisseBasedProjects []
  2. http://blogs.sun.com/NetBeansSupport/entry/target_jdk []

5 comments to Netbeans – NoClassDefFoundError – GroupLayout

  • Marcel R

    Ich danke dir für den Artikel.

    Die Anwendung lief bei mir einwandfrei, bei meinem Chef (andere Stadt) leider nicht.
    Ich hatte keine Chance bei ihm zu debuggen und er konnte mir auch die Exception nicht nennen, weil er (verständlicherweise) die Anwendung nicht aus einer Shell startet und diese somit nicht angezeigt werden. Hab vermutet, dass es eine Netbeans Geschichte ist und bin nach etwas Recherche hier drauf gestoßen. Problem gelöst. :)

  • Thomas G

    Hallo! Ich möchte dir auch für diesen Artikel danken! Leider bin ich erst nach langer Suche auf diesen Artikel gestoßen – sonst hätte ich mir viel Arbeit erspart! :)

  • Der Mops

    danke fürs veröffentlichen. immer wieder ärgerlich wie lange einen so kleine quirks aufhalten, und wie trivial sie zu beheben sind…

  • Lars

    geht leider trotzder guten erläuterung nicht. jetzt kann ich die jar leider nicht mehr mit doppelklick öffnen. wenn ich es über die konsole starte, kommt immer der fehler java.lang.NoClassDefFoundError: itunes2html/jar

    hat jemand einen rat?

  • Lars

    habe eine antwort gefunden:

    “How can I package the swing-layout-version.jar library into my application JAR?

    Having developed your Swing application in Matisse (using the “Free Design” layout) you can package the required swing-layout-version.jar library inside your application JAR file.

    Requirements:

    * Standard Java project
    * Swing Layout Extensions library included in your project’s classpath

    Open your project’s build.xml from the Files tab and insert this:

    Just press F11 to build your project as usual. This Ant target will bundle swing-layout.jar inside your distribution JAR file.

    You can adapt this Ant target to different requirements.

    Note: The default and preferred way is to distribute the swing-layout-version.jar separately, as described in the How to run and distribute… ”

    Quelle: http://wiki.netbeans.org/FaqPackagingMatisseBasedProjects

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>