JavaVM und Servlet-Container auf FritzBox

fischefr

Mitglied
Mitglied seit
30 Okt 2004
Beiträge
207
Punkte für Reaktionen
0
Punkte
16
Hallo!
Ich hab beschlossen einen Versuch zu unternehmen, einen Java-Webserver auf die Box zu bekommen.

Die VM (JamVM) steht schon, hab ich aber noch nicht getestet.
Was noch fehlt sind
- Classpath (Java-Library unter GNU-Lizenz)
- Servlet-Container

Jetzt würde mich interessieren, obs hier evtl. Mitstreiter gibt?
Erschwerend kommt für mich hinzu, dass ich nur die FritzBox wlan fon habe, also keine mit USB-Host. Wird sich aber gegen Ende des Jahres ändern!

Bei Classpath häng ich gerade, genaue Meldung siehe hier
 
Juhu. Nach 2 Tagen compilieren:
Code:
/var/mod/root $ ./jamvm -Xbootclasspath:/usr/local/classpath/share/classpath/classes.zip:/usr/local/classpath/share/classpath/glibj.zip Hello
Hello World!
/var/mod/root $
Leider ist das glibj.zip 8MB groß. Im Openwrt hab ich gesehen, dass die ein miniclass.jar bauen. Leider scheint mir da eine Klasse zu fehlen, deshalb bekomm ich das damit nicht zum Laufen. Das wäre nur ca. 300kb groß.

MfG Oliver

edit: Ich häng mal meine Makefile-Sammlung an...
 

Anhänge

  • jamvm.tar.bz2
    10.1 KB · Aufrufe: 32
Zuletzt bearbeitet:
Wieso Makefile-Sammlung? Makefiles sind doch sowieso dabei.

Ich würd ja hier mal meine JamVM auch anbieten, aber wie lad ich hier was hoch? Was hats mit der glibj auf sich? Der Name ist mir bisher noch gar nicht unter gekommen.

Ist die Größe überhaupt wichtig? Ich meine, das Zeug liegt doch auf der Festplatte und nicht im RAM. D.h. es hängt von classloader ab. Weißt du, wie der das handhabt? Wär blöd, wenn der eine Klasse lädt und die dann bis zum nächsten Neustart im RAM behält. Ich will ja einen Servlet-Container drauf packen. Ansonsten wär mir wichtig, dass die Api von der Sun-Api möglichst wenig abweicht.

Nachtrag:

Ich habe jetzt mal --disable-Werror probiert. Aber jetzt scheint beim ds-mod eine Datei zu fehlen:
/home/franz/ds-0.2.9/toolchain/build/gcc-4.1.0-uClibc-0.9.26/mipsel-linux-uclibc/lib/gcc/mipsel-linux-uclibc/4.1.0/../../../../mipsel-linux-uclibc/bin/ld: cannot find -lgconf-2
collect2: ld returned 1 exit status
make[3]: *** [libgconfpeer.la] Fehler 1
make[3]: Verlasse Verzeichnis '/home/franz/classpath-0.93/native/jni/gconf-peer'
make[2]: *** [all-recursive] Fehler 1
make[2]: Verlasse Verzeichnis '/home/franz/classpath-0.93/native/jni'
make[1]: *** [all-recursive] Fehler 1
make[1]: Verlasse Verzeichnis '/home/franz/classpath-0.93/native'
make: *** [all-recursive] Fehler 1
franz@notebook:~/classpath-0.93$
Ich kann das verdammte classpath einfach nicht kompilieren!

Meine Vorgehensweise war folgende:
--jamvm---
export CFLAGS=-static-libgcc
export CC=/home/franz/ds-0.2.9/toolchain/build/gcc-4.1.0-uClibc-0.9.26/mipsel-linux-uclibc/bin/mipsel-linux-gcc-4.1.0
./configure --host=mipsel-*-linux*
make
make install prefix=<Pfad>
<jamvm strippen>

---classpath---
<jikes installieren>
export CFLAGS=-static-libgcc
export CC=/home/franz/ds-0.2.9/toolchain/build/gcc-4.1.0-uClibc-0.9.26/mipsel-linux-uclibc/bin/mipsel-linux-gcc-4.1.0
./configure --host=mipsel-*-linux* --with-jikes --disable-gtk-peer --disable-Werror
make

Übrigens:
Man kann bei classpath auch Pakete ausschließen! Das wär evtl. eine Überlegung, wenn die Dateigröße eine Rolle spielt. Wie hast du denn kompiliert? Hast du auch --disable-gtk-peer benutzt?
 
Zuletzt bearbeitet:
Im Anhang stehen die configure-Aufrufe drin. Schau doch am Besten mal dort rein. ;-)

MfG Oliver
 
Also ich hab keine Ahnung, was du das für Zeug hochgeladen hast.
In welcher Datei soll ich die finden? :noidea:
 
So viele Dateien sind doch nicht drin. Das sind übrigens die Targets für den dsmod. classpath findest du in make/classpath/classpath.mk.

Im Anhang ist die mini.jar. Mit allen Klassen für Hello World.

MfG Oliver
 

Anhänge

  • mini.tar.gz
    287.7 KB · Aufrufe: 29
Ich glaub ich brauch da erst mal einen Anfänger-Crashkurs :noidea:

Was hats mit dieser Datei auf sich? Ich benutz immer einfach nur make und das mit dem sourcen mitgelieferte Makefile. Was patchst du da rum? Bin etwas verwirrt jetzt. Geht das so einfach, wie ich das probiert hab nicht?
 
Doch natürlich geht das auch so. Mit meinen Files gibst du (vorausgesetzt die sind an die richtige Stelle kopiert) im dsmod "make classpath-precompiled" und "make jamvm-precompiled" ein und dann werden die Sachen gebaut.
Dazu empfiehlt sich der Wiki-Eintrag von kriegaex zum Make-Prozess im dsmod.

MfG Oliver
 
Mir ist gerade noch was aufgefallen:

--disable-qt-peer \
--disable-gconf-peer \
--without-libiconv-prefix \
--disable-plugin \

hab ich nicht benutzt.
Das 1. brauch ich wohl sicher nötig und das letzte dürfte diese Sache mit dem Mozilla-Plugin sein, das in der readme beschrieben ist. gconf war die Sache mit dem *.prefs Paket. Bringt man das nicht zum Laufen? Libiconf sagt mir gerade nichts.
Ich werd mir das heute Abend nochmal anschauen - momentan sitz ich in der Arbeit und sterbe hier fast :beerdigu:

Mir wär jetzt eher nach :kasper:

Ihr bekommt mich noch so weit, doch mal den ds-mod aufzuspielen.
Aber in den Flash bekomm ich das mit den besagen 8MB wohl sowieso nicht rein, oder?
 
Zuletzt bearbeitet:
Alle Java-Klassen bekommst du nicht in den Flash. Die sind ja komprimiert schon 8mb groß.

MfG Oliver
 
Eben! Dann gibts nur 2 Möglichkeiten:

a) externer Datenträger (fällt bei meiner Fritzbox wlan fon weg)
b) Archiv ausmisten

Allerdings dürfte das ziemlich viel Arbeit sein, da Klasse für Klasse durchzugehen, wenn man eine konkrete Anwendung laufen lassen will.

ProGuard is a free Java class file shrinker, optimizer, and obfuscator. It removes unused classes, fields, methods, and attributes. It then optimizes the bytecode. It then renames the remaining classes, fields, and methods using short meaningless names.
:nemma:
 
Zuletzt bearbeitet:
nabend ^^

habe folgendes problem ...
Code:
/usr/bin $ ./jamvm -Xbootclasspath:/var/media/ftp/externe/java/classes.zip:/var/media/ftp/externe/java/glibj.zip /var/media/ftp/externe/java/HalloWelt
bootclasspath is empty!

habe von post davor die methode a gewählt (externe hdd)

der quellcode der java datei ist ja recht simpel...
Code:
public class HalloWelt {
  public static void main(String args[]){
    System.out.println("Hallo Welt");
  }
}

mfg Webhalf
 
Oh je. Ich hab befürchtet, dass es jemand irgendwann ausprobieren muss. ;-)
Ich kann dir aber nicht sagen, warum dein Bootclasspath empty sein soll.

MfG Oliver
 
joar *gg*
hab halt java 2 jahre lang an der schule gelernt und wollt nun halt rumspielen ;)
ich teste mal weiter

mfg Webhalf
 
Wenn du mehr weist oder Probleme hast meld dich mal. Ich hab jetzt im Augenblick auch wieder etwas Zeit... Allerdings hab ich nur die alte Fritzbox ohne USB-Host und kann daher wenig ausprobieren. Gibts da überhaupt momentan eine Toolchain für die aktuelle Firmware-Version? Ich bin da nicht mehr ganz up to date. Ich hoffe aber auf die Fritzbox 7270. Wenn die mal günstig her geht... ;)
 
So, bei mir gehts jetzt wieder...
Code:
/var/mod/root $ jamvm -Xbootclasspath:/usr/share/classpath/classes.zip:/usr/share/classpath/glibj.zip -cp ./ Hello
Hello World!
/var/mod/root $
MfG Oliver
 

Anhänge

  • jamvm.patch.bz2
    527 Bytes · Aufrufe: 28
jeah :D thx :)

konnte es endlich testen und:

Code:
/var/mod/home/ftp/externe/java $ jamvm -Xbootclasspath:./classes.zip:./glibj.zip -cp ./ HalloWelt
Hallo Welt
:D

ich will ein kind von dir *gg*

mit freundlichen Grüßen
Webhalf
 
bootclasspath is empty - was muss man machen

Hallo Leute,

ist glaub ich mein erster Post hier im Forum (bin die ganze Zeit nur passiv dabei), aber nu brauch ich doch mal hilfe.

Bekomme nämlich auch die Meldung: bootclasspath is empty!

Habe das alles über den freetz mod gemacht. Dort wird aber schon jamvm 1.45 und classpath 0.95 verwendet und der Quellcode sieht etwas anders aus, sodass der Patch von euch nicht funktioniert.

Ich weiß auch nich genau was ich dort jetzt ändern soll. Habe mal die make files von mir rangehangen. Evtl könnt ihr mir ja helfen, blick da nun doch nich mehr so ganz durch. :rolleyes:

Vielen Dank.

MfG
Steven
 

Anhänge

  • make_files.zip
    71.3 KB · Aufrufe: 9
Zuletzt bearbeitet:
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.