[gelöst] java (gcj,gij) und swt

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
BeS
Moderator
Beiträge: 3236
Registriert: 17.04.2002 18:30:21
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Stuttgart
Kontaktdaten:

[gelöst] java (gcj,gij) und swt

Beitrag von BeS » 10.11.2005 21:07:52

Hallo,
ich habe hier den gcj, gij und eclipse-sdk installiert. Da müsste doch alles dabei sein um swt Programme auszuführen?

Wenn ich aber ein einfaches Hello-World Programm kompilieren will:

Code: Alles auswählen

import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Label;

public class SWTHello {
    public static void main (String [] args) {
        Display display = new Display ();
        final Shell shell = new Shell(display);
        RowLayout layout = new RowLayout();
        layout.justify = true;
        layout.pack = true;
        shell.setLayout(layout);
        shell.setText("Hello, World!");
        Label label = new Label(shell, SWT.CENTER);
        label.setText("Hello, World!");
        shell.pack();
        shell.open ();
        while (!shell.isDisposed ()) {
            if (!display.readAndDispatch ()) display.sleep ();
        }
        display.dispose ();
    }
}
bekomme ich nur eine Reihe von Fehlermeldungen:

Code: Alles auswählen

 javac SWTHello.java
SWTHello.java:5: error: Class or interface 'org.eclipse.swt.widgets.Label' not found in import.
   import org.eclipse.swt.widgets.Label;
          ^
SWTHello.java:9: error: Type 'Display' not found in the declaration of the local variable 'display'.
           Display display = new Display ();
           ^
SWTHello.java:10: error: Type 'Shell' not found in the declaration of the local variable 'shell'.
           final Shell shell = new Shell(display);
                 ^
SWTHello.java:11: error: Type 'RowLayout' not found in the declaration of the local variable 'layout'.
           RowLayout layout = new RowLayout();
           ^
SWTHello.java:16: error: Type 'Label' not found in the declaration of the local variable 'label'.
           Label label = new Label(shell, SWT.CENTER);
           ^
5 errors
Wer kennt sich mit java aus und kann mir sagen was ich falsch mache bzw. was vielleicht noch fehlt?

Danke!

EDIT: Hat sich erledigt, ich habe vergessen CLASSPATH auf /usr/share/java/swt-gtk.jar zu setzen
Deine Unterstützung für Freie Software kostet dich nur wenige Minuten: www.fsfe.org/support

Ich spreche von Freier Software!

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 10.11.2005 22:21:30

bin mir jetzt nicht ganz sicher, aber ich glaube zum Ausführen deines Programms mußt du auch noch den LD_LIBRARY_PATH auf die libswt*.so's setzen

Gruß
gms

Benutzeravatar
hupfdule
Beiträge: 1864
Registriert: 09.12.2002 15:04:37
Wohnort: Berlin
Kontaktdaten:

Beitrag von hupfdule » 11.11.2005 09:20:53

Normalerweise muss man unter Java den CLASSPATH setzen, dass ist der Pfad, wo die benötigten .jar und .class Dateien liegen. Den müsstest du dann gcj mitgeben. Eventuell hat aber auch gms Recht, dass du nur den LD_LIBRARY_PATH anpassen musst.

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 11.11.2005 09:27:48

hupfdule hat geschrieben:Eventuell hat aber auch gms Recht, dass du nur den LD_LIBRARY_PATH anpassen musst.
nein, so war das nicht gemeint, den CLASSPATH braucht er natürlich auch, aber bei SWT werden auch noch zusätzliche Shared Libraries (libswt*.so) aufgerufen, die vom aufrufenden Programm auch gefunden werden müssen. Eine Lösung dieses Problems ist eben den LD_LIBRARY_PATH anzupassen.

Gruß
gms

Antworten