[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