[Berlin-wireless] Java Frage...
Thomas Urmann
thomas.urmann
Sa Mär 8 10:57:35 CET 2008
Hi,
ich hab mich bisher zwar noch nie mit nativ Compilern beschäftigt, aber
was mir auf der GCJ-Seite als
erstes aufgefallen ist war, dass das JDK 1.2 implementiert wird, was
schon ziemlich alt ist. Ansonsten
wurden nur einige featues (nicht alle) aus höheren Versionen eingebaut.
http://gcc.gnu.org/onlinedocs/gcj/Limitations.html#Limitations
Aber wenn wir das mal bei Seite lassen, dann hab ich das so verstanden,
dass GCJ versucht nativ zu
kompilieren und wenn das nicht klappt, dann werden .class-Files
verwendet (also so ne Mischung aus
nativ und .class).
> Genau das macht GCJ. Mache ich einen Test,
> z.b. "gcj -fjni --main=freenet.node.NodeStarter --classpath=freenet-ext.jar
> freenet-cvs-snapshot.jar", dann gibts offenbar Aerger mit dem Dollarzeichen
> (siehe beigefuegtes nohup.out).
>
> Eine Ahnung, was diese class$ sein sollen (sowat wie ctor/dtor)?
>
>
Das $-Zeichen kenne ich in Verbindung mit Java nur aus den Dateinamen
der kompilierten .class-Files.
Wenn man in Java Innerclasses verwendet, so werden diese in einem extra
.class-File abgelegt. Der Name
ist dann so aufgebaut:
<NameÄußereKlasse>$<NameInnereKlasse>.class
Ich würde mal interpretieren, dass die "class$"s nicht das eigentliche
Problem sind. Ich glaube eher, dass
du den Classpath noch etwas erweitern musst. Im beigefügten nohup.out
sagt mir die Zeile
freenet-cvs-snapshot.jar:(.text+0x11daa): undefined reference to
`com::onionnetworks::util::Buffer::class$'
, dass die Klasse com.onionnetworks.util.Buffer nicht referenziert
werden kann. Das Package
com.onionnetworks.util deutet stark auf eine jar-Datei hin, die von
Freenet benutz wird. Ich würde
dir vorschlagen bei denem GCJ-Aufruf im Classpath alle jar-Dateien
anzugeben, die bei Freenet
mitgeliefert werden. Dann bist du denk ich sicher, dass alles dabei ist.
Gruß
Tom
Mehr Informationen über die Mailingliste Berlin