Probleme mit Cross-Compiler

plonk

Mitglied
Moin zusammen,
ich habe ein, wie ich finde, sehr spezielles Problem und ich glaube kaum, dass mir jemand aus dem Stehgreif dabei weiterhelfen kann, aber da ich ziemlich verzweifelt bin probier ich es trotzdem mal.

Folgendes Problem:
Ich habe vor, einen bereits vorhandenen minimalen Webserver (in Java programmiert) um SSL-Fähigkeit zu erweitern. Dies ist erstmal in Java das geringste Problem. Prinzipiell bin ich damit auch schon fertig und der Webserver läuft.
Allerdings soll der Webserver später nich auf einem PC laufen, sondern auf einem Embedded Board mit ARM-Prozessor. Für diesen gibt es einen Crosscompiler, er auf dem GCJ aufbaut und aus Java-Quellcode nativen Maschinencode produzieren kann.
Dieser Crosscompiler ist allerdings nur Java 1.2-kompatibel, so dass sämtliche SSL-Klassen fehlen. Dieses Problem will ich umgehen, indem ich die freie Klassenbibliothek Jessie verwende. Diese ist laut Entwickler auch GCJ-kompatibel.

Der Crosscompiler ist unter Cygwin intsalliert und funktioniert auch prinzipiell. Aber wenn ich mein Programm mit dem Befehl
Code:
arm-linux-gcj -static --main=WebServer WebServer.java -o webs
übersetzen will erhalte ich folgende Fehlermeldung:
Code:
/cygdrive/c/DOKUME~1/mheister/LOKALE~1/Temp/ccC5PASV.o(.text+0x3180): In functio
n `WebServer::main(JArray<java::lang::String*>*)':
WebServer.java: undefined reference to `javax::net::ssl::KeyManagerFactory::getI
nstance(java::lang::String*)'
/cygdrive/c/DOKUME~1/mheister/LOKALE~1/Temp/ccC5PASV.o(.text+0x31c0):WebServer.j
ava: undefined reference to `javax::net::ssl::KeyManagerFactory::init(java::secu
rity::KeyStore*, JArray<wchar_t>*)'
/cygdrive/c/DOKUME~1/mheister/LOKALE~1/Temp/ccC5PASV.o(.text+0x31cc):WebServer.j
ava: undefined reference to `javax::net::ssl::SSLContext::getInstance(java::lang
::String*)'
/cygdrive/c/DOKUME~1/mheister/LOKALE~1/Temp/ccC5PASV.o(.text+0x321c):WebServer.j
ava: undefined reference to `javax::net::ssl::KeyManagerFactory::getKeyManagers(
)'
/cygdrive/c/DOKUME~1/mheister/LOKALE~1/Temp/ccC5PASV.o(.text+0x3234):WebServer.j
ava: undefined reference to `javax::net::ssl::SSLContext::init(JArray<javax::net
::ssl::KeyManager*>*, JArray<javax::net::ssl::TrustManager*>*, java::security::S
ecureRandom*)'
/cygdrive/c/DOKUME~1/mheister/LOKALE~1/Temp/ccC5PASV.o(.text+0x325c):WebServer.j
ava: undefined reference to `javax::net::ssl::SSLContext::getServerSocketFactory
()'
/cygdrive/c/DOKUME~1/mheister/LOKALE~1/Temp/ccC5PASV.o(.text+0x3674):WebServer.j
ava: undefined reference to `javax::net::ssl::SSLServerSocket::class$'
collect2: ld returned 1 exit status
Das Kompilieren und das Assemblieren des Quelltextes funktioniert ohne Fehlermeldungen, aber wenn man kompilieren, assemblieren UND linken will (was für ein lauffähiges Programm natürlich vorraussetzung ist) erhalte ich diese Fehler.
Ach ja: Bevor ich die SSLErweiterungen eingebaut hatte ließ sich der Webserver mit dem Crosscompiler übersetzen.

Da das Programm sich ja eigentlich normal übersetzen lässt (zumindest mit einem normalen JDK) werde ich an dieser Stele auch erstmal keinen Quellcode posten. Mich würde überhaupt erst einmal interessieren, wie ich diese Fehlermeldungen deuten kann und wie ich jetzt weiter bei der Fehleranalyse vorgehen kann.

Ich danke Euch auf jeden Fall schon mal im Vorraus!

Marc
 
Danke erst einaml für die schnelle Antwort.
Ich bin gerade dabei deinem Tip nachzugehen, allerdings fehlen in der jsse.jar einige Klassen, die ich benötige (z.B. javax.net.ssl.SSLContext, javax.net.ServerSocketFactory).

Ich bastel dann mal weiter und poste dann meine Ergebnisse an dieser Stelle.

Have an nice day!
 
Nein, die Klassenbibliothek beinhaltet leider nicht die Klassen, die ich suche.
Die meisten Klassen, die ich brauche, hab ich auch schon gefunden. Sie waren nur in anderen Packages.
Nun fehlt mir nur noch die ServerSocketFactory. Die ist leider weder Bestandteil von jdk1.2 noch von jsse. Bin gerade am googeln, ob es nicht irgendwo ne jar-Datei mit dieser Klasse gibt.
 
So, ich habs jetzt mal mit JSSE ausprobiert. Viel verbessert hat das die Situation leider nicht. Ich bekomme zwar etwas weniger Fehlermeldungen aber das Problem besteht immer noch.
 
So, habs endlich hinbekommen. Da die Lösung allerdings ziemlich umfangreich ist und sich wahrscheinlich kaum jemand dafür interessiert werde ich diese hier erst mal nicht posten. Falls doch mal jemand auf die Lösung angewiesen sein sollte kann er an dieser Stelle mich gerne darauf hinweisen.

Gruß
Marc
 
Zurück