Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

SWT NoClassDefFoundError

7 views
Skip to first unread message

bruno.d...@googlemail.com

unread,
Feb 17, 2007, 2:57:30 PM2/17/07
to
Hallo,

ich taste mich gerade in SWT rein, und komme nicht weiter. In Eclipse
habe ich ein kleines Hello-World-Programm geschrieben, das auch läuft,
wenn ich es aus Eclipse starte. Will ich das dann aus der
Kommandozeile anwerfen, gibt es immer einen:

Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/
swt/widgets/Layout

Ich habe schon im Internet gesucht und herausgefunden dass ich
irgendwas mit -cp für den Classpath drehen muss und ein -
Djava.library.path= als Parameter rein muss. Dahinter dann jeweils
Verweise auf irgendwelche Dateien. Aber ab da verstehe ich nur noch
Bahnhof.

Kann mir vielleicht kurz jemand erklären, worauf ich da verlinken
muss, bzw. wenn ich das Programm "ohne Eclipse" starten will, welche
Dateien ich mitgeben müsste? Oder gibt es eine Möglichkeit, dem
Eclipse die aufgerufene Befehlszeile zu entnehmen? Denn letztendlich
wird da doch auch bloß eine Classdatei kompiliert und aufgerufen.
Meine Versionen sind übrigens Java 1.5 und Eclipse 3.2.

Gruß, Bruno

Michael Paap

unread,
Feb 17, 2007, 6:44:13 PM2/17/07
to
bruno.d...@googlemail.com wrote:
^^^^^^^^^^^^^^

Och bitte....

> Ich habe schon im Internet gesucht und herausgefunden dass ich
> irgendwas mit -cp für den Classpath drehen muss und ein -
> Djava.library.path= als Parameter rein muss. Dahinter dann jeweils
> Verweise auf irgendwelche Dateien. Aber ab da verstehe ich nur noch
> Bahnhof.
>
> Kann mir vielleicht kurz jemand erklären, worauf ich da verlinken
> muss, bzw. wenn ich das Programm "ohne Eclipse" starten will, welche
> Dateien ich mitgeben müsste? Oder gibt es eine Möglichkeit, dem
> Eclipse die aufgerufene Befehlszeile zu entnehmen? Denn letztendlich
> wird da doch auch bloß eine Classdatei kompiliert und aufgerufen.

Bei diesem "nur" werden aber eben die SWT-Bibliotheken aus Eclipse
eingebunden.

Der einfachste Weg ist vermutlich, dir unter http://www.eclipse.org/swt/
SWT für deine Plattform separat herunterzuladen. Du kannst dann das Zip
auspacken und das swt.jar beim Starten deiner Anwendung zum Classpath
hinzufügen:

java -cp ".;C:\whatever\swt.jar" MeineKlasse

Und dann sollte es laufen. Der Punkt steht dabei fürs aktuelle
Verzeichnis, d.h. ich gehe dabei davon aus, dass du den Befehl von dort
ausführst wo dein Klassen bzw. Packages liegen.

Wenn du auch JFace verwenden willst, musst du das auch noch einbinden...
wahrscheinlich kann man das auch separat herunterladen.

Gruß,
Michael

bruno.d...@googlemail.com

unread,
Feb 20, 2007, 7:20:37 AM2/20/07
to
Hallo und danke für die Antwort. So ganz wie ich mir das vorstelle
klappt das nicht.

> Der einfachste Weg ist vermutlich, dir unterhttp://www.eclipse.org/swt/


> SWT für deine Plattform separat herunterzuladen. Du kannst dann das Zip
> auspacken und das swt.jar beim Starten deiner Anwendung zum Classpath
> hinzufügen:
>
> java -cp ".;C:\whatever\swt.jar" MeineKlasse

Ich habe das mal so gemacht:

java -cp ".;swt.jar" HelloWorld


Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/

jface/action/Action
at HelloWorld.main(HelloWorld.java:78)

Gut, das scheint er zu machen und knallt dann weg weil er die JFace
nicht findet. Die kann ich aber auch nicht finden. Hmm.

Wenn ich das ganze dann "umbastel" in ein .jar, sieht das dann so aus:

java -cp ".;swt.jar" -jar HelloWorld.jar


Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/

swt/widgets/Control
at HelloWorld.main(HelloWorld.java:78)

Da scheint er dann die SWT schon nicht zu finden.

Also meine Probleme nun:
1. Wie kriege ich JFace da noch mit rein?
2. Wie kriege ich das von einem .jar aus gestartet?

Wäre schön wenn mir nochmal jemand einen Tipp geben kann. Weil ich ja
später wohl mehr als eine Klasse habe und das dan gerne als .jar
machen würde. Und den Nutzern dann zu sagen, installiert euch mal eben
Eclipse/Callisto, kann es ja nun auch nicht sein. Auch wenn es
vielleicht mal eine Hand voll Nutzer sind im Höchstfall.

Gruß,
Bruno

PS. gibt es eigentlich eine Möglichkeit, dem Eclipse die Aufruf-
Kommandozeile zu entlocken? Denn es ist ja schön wenn ich mir
Bibliotheken zusammenklicken kann, aber wenn ich die Kommandozeile
sehen würde, könnte ich das ja dann "anpassen" bzw. würde besser
verstehen was da im Hintergrund passiert.

Jochen Theodorou

unread,
Feb 20, 2007, 11:27:40 AM2/20/07
to
bruno.d...@googlemail.com schrieb:

> Hallo und danke für die Antwort. So ganz wie ich mir das vorstelle
> klappt das nicht.
>
>> Der einfachste Weg ist vermutlich, dir unterhttp://www.eclipse.org/swt/
>> SWT für deine Plattform separat herunterzuladen. Du kannst dann das Zip
>> auspacken und das swt.jar beim Starten deiner Anwendung zum Classpath
>> hinzufügen:
>>
>> java -cp ".;C:\whatever\swt.jar" MeineKlasse
>
> Ich habe das mal so gemacht:
>
> java -cp ".;swt.jar" HelloWorld
> Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/
> jface/action/Action
> at HelloWorld.main(HelloWorld.java:78)
>
> Gut, das scheint er zu machen und knallt dann weg weil er die JFace
> nicht findet. Die kann ich aber auch nicht finden. Hmm.

ist jface nicht ein extra jar? schau dir mal die links hier an
http://www.eclipseproject.de/modules.php?name=News&file=article&sid=49
Ist zwar für eine ältere Version, aber der Hinweis auf die jface.jar ist
da auch zu finden.

Gruss theo

--
Jochen "blackdrag" Theodorou
Groovy Tech Lead (http://groovy.codehaus.org)
http://blackdragsview.blogspot.com/

Ralph Bergmann

unread,
Feb 23, 2007, 3:12:53 PM2/23/07
to
Hallo!

Jochen Theodorou schrieb:


> ist jface nicht ein extra jar? schau dir mal die links hier an
> http://www.eclipseproject.de/modules.php?name=News&file=article&sid=49
> Ist zwar für eine ältere Version, aber der Hinweis auf die jface.jar ist
> da auch zu finden.

Eigentlich bringt Eclipse ja schon alles mit, was man so braucht. Die
JAR's eben auch.

Wenn Du in Eclipse Dir Dein Projekt anschaust, dann steht dort im
Package Explorer, dass Du das Standard Widget Toolkit benutzt und wenn
Du diesen Eintrag in dem Baum aufklapst, dann findest Du auch alle
genutzten JAR's plus dem Pfad, wo sie zu finden sind.


Ralph

0 new messages