PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : gcj Java-compiler funzt ned



xare
22-09-2002, 22:14
Hallo!

Ich hab mir jetzt gcc 3.2 runtergeladen um gcj benutzen zu können und mit einem g++ 2.9*** kompiliert.

Dann hab ich meinen gcj an nem einfachen Java-Programm ausprobiert und folgende Meldung gekriegt:

/usr/lib/crt1.o: In function `_start':
/usr/lib/crt1.o(.text+0x18): undefined reference to `main'
collect2: ld returned 1 exit status

Was ist das nun für ein Problem? Kann es sein, dass die crt1.o nicht binärkompatibel zu dem neuen gcc 3.2 ist und deshalb der Fehler auftritt?

Hab ich zumindest angenommen, mir gleich die neueste glibc2.2.5 runtergeladen, hab aber irgendwie Probleme beim Kompilieren.

Jetzt würde ich von euch gerne wissen, bevor ich mit glibc weiterwurschtle, ob das überhaupt mein Problem ist, oder ob gcj möglicherweise aus einem anderen Grund nicht funktioniert.

MfG Xare

Lin728
24-09-2002, 07:32
Hi,

Hast du denn die Main-Klasse spezifiziert?

gcj java1.java java2.java main.java -o Programm --main=main

Wie du bei dem Parameter main genau sehen kannst, musst du ihm einfach die Hauptlasse angeben.

Wars das?

Mfg

xare
24-09-2002, 17:42
Hi!

Das wars, danke für die Hilfe!

Aber warum merkt das denn der gcj nicht von selbst? Kann der javac doch auch. Vor allem, wenn es nur eine Klasse/Datei ist.

MfG Xare

Lin728
24-09-2002, 19:47
Hi,

Du sagst ja: java hauptklasse

Damit sagst du ja praktisch, dass das die Hauptklasse ist, und wenn keine main-methode drinnen ist, beschwert er sich.

Natürlich könnte man sagen, dass auch automatsch der gcj machen könnte, aber die java-spezification sieht vor, dass es mehrere main-methoden geben darf. Also gehts dann doch nicht ;-)

Mfg

wisi
05-12-2002, 17:29
hallo!



Original geschrieben von ceisserer
gcj java1.java java2.java main.java -o Programm --main=main

das funktioniert bei mir nicht! ich erhalte folgende fehlermeldung:
GCJ.EXE: installation problem, cannot exec 'as': No such file or directory

Was stimmt da nicht?

MFG
Wisi

tkortkamp
05-12-2002, 20:17
@wisi:
Dir fehlt das Programm 'as'... Installiere bitte das Paket binutils nach.

c ya,
Tobias

peschmae
06-12-2002, 09:40
aber die java-spezification sieht vor, dass es mehrere main-methoden geben darf. Also gehts dann doch nocht ;-)

was so auch Sinn macht, kann man doch damit jeweils Klassenspezifische Testroutinen in jeder Klasse in die main - Methode schreiben und auch dort belassen. So kann man nach jeder Änderung schnell schauen, ob die Klasse noch so reagiert wie vorgesehen.

der Grund wieso du die Hauptklasse angeben musst, liegt darin, dass du mit GCJ das ganze zu einer Datei linken kannst, und dann ist natürlich eine Hauptklasse nötig (genau wie bei den Jar - Files auch)

MfG Peschmä

wisi
06-12-2002, 19:30
Original geschrieben von tkortkamp
@wisi:
Dir fehlt das Programm 'as'... Installiere bitte das Paket binutils nach.

So, jetzt habe ich alles, ich habe einfach noch einmal das ganze MinGW + GCJ runtergeladen und kann auch EXE-Dateien erstellen, aber wenn ich die Datei ausführe kommt der Fehler:
returned
end
Exception in thread "main" java.awt.AWTError: Cannot load AWT toolkit: gnu.java.awt.peer.gtk.GtkToolkit

Was tun?

Lin728
07-12-2002, 10:03
GCJ unterstützt noch kein AWT.

Mfg

wisi
07-12-2002, 16:30
Original geschrieben von ceisserer
GCJ unterstützt noch kein AWT.

Sch*****!!!
So viel Zeit umsonst verschwendet. Da kann ich ja gleich mit C++ programmieren.

Lin728
07-12-2002, 17:03
Hi!

Nun, es gibt Bindings im Alpha-stadium, so kann man AWT nachrüsten.
GCJ kann derzeit nur Java-GTK/GNOME/SWT/Java-QT/KDE.



Mfg

Lin728
07-12-2002, 17:17
Nun, hab jetzt erst gemerkt, dass du windows nimmst: Vergiss den GCJ, der läuft nur auf ordentlichen systemen gut.
Unter windows kannste es vergesen, da kann der nicht mal dynamisch linken ;-)

Mfg

wisi
07-12-2002, 19:15
Gibt's vielleicht einen anderen JavaNative-Compiler ausser den folgenden, der AWT unterstützt? (die sind entweder zu groß, gehen nicht zum Download oder sind zu langsam (z.B. JET)):

- Excelsior JET
- GCJ (in Cygwin/MinGW)
- TowerJ
- VisualAge
- JOVE
- Manta

MFG
Wisi

Lin728
07-12-2002, 21:01
JET ist dir zu langsam?
JET ist sogar schneller als der gcj!

Mfg

wisi
08-12-2002, 08:14
Original geschrieben von ceisserer
Was?

JET ist dir zu langsam?
Die executables sind wohl das schnellste was ich je gesehen habe, JET ist sogar schneller als der gcj!

Mfg Linuxhippy

Mag wohl sein, das JET schnell ist, aber auf meinem Schrott-Computer würde es drei Tage lang dauern, bis die ganzen Klassen kompiliert sind.