• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

CacheWolf selbst bauen

Kalli

Geowizard
Wie bekomme ich eine brandaktuelle Version des CacheWolf?

Die Sourcen von CacheWolf sind in einem Subversion-Repository bei http://www.berlios.de (Details hier) vorhanden, hierauf kann jeder lesend zugreifen. Schreibrechte werden auf Anfrage erteilt. Nachfolgend ist beschrieben, wie man sich die aktuelle Entwicklerversion besorgen kann und zum Laufen bekommt. Es gibt auch eine Mailingliste, wenn man sich hier einträgt, bekommt man eine Mail, sowie eine Änderung am Code erfolgt ist oder es eine Änderung bei den Bugreports oder Featurerequests gegeben hat.

CacheWolf wurde für und mit Ewe in Java programmiert. Ewe bietet für viele Plattformen sogenannte virtuelle Maschienen an, außerdem können für Ewe geschriebene Programme auf allen Plattformen laufen, die eine Java-Laufzeitumgebung haben (nicht zu verwechseln mit dem "Handy-Java" J2ME).

Benötigte Programme
- JDK von Sun , enthält auch die Java Laufzeitumgebung
- Ein Subversion (SVN) Client, z.B. Tortoise für WinXP , kdesvn für Linux (KDE) oder das subclipse-Plugin für eclipse
- Das Ewe-Developer-SDK

Java-Version
- Checkout der aktuellen Sourcen aus dem Repository (z.B. http://svn.berlios.de/svnroot/repos/cachewolf/trunk)
- Das Verzeichnis kann lokal umbenannt werden, z.B. in CacheWolf
- Es sollte bereits ein Verzeichnis bin/CacheWolf geben, falls nicht, bitte anlegen
- Die Linux-Scripte mit einem chmod 755 *.sh ausführbar machen
- Script compile.bat (WinXP) bzw. ./compile.sh (Linux) ausführen. Es gibt etwa 10 Warnings.
- Script getRes.bat bzw. ./getRes.sh ausführen. Damit werden u.a. die Image-Dateien in das Work-Verzeichnis kopiert
- Script runwolf.bat bzw. ./runwolf.sh ausführen. Damit wird der CacheWolf im Work-Verzeichnis gestartet. Das Datenverzeichnis sollte man irgendwo anders hinlegen, z.B. parallel zum CacheWolf-Verzeichnis.

Ausführbare Versionen erzeugen, z.B. für WinXP oder PPC
- Parallel zum CacheWolf-Verzeichnis ein Verzeichnis Ewe/programs anlegen, die Dateien finden sich im Ewe-Developer-SDK. Da dieses Verzeichnis von den Scripten relativ (also per ../Ewe/programs) angesprochen wird, auf genaue Einhaltung der Namen achten.
Der Inhalt des Verzeichnisses ist bei mir unter Linux wie folgt:
Code:
-rw-r--r-- 1 kalle kalle      29 2006-07-28 20:43 Ewesoft-Jewel.cfg
-rw-r--r-- 1 kalle kalle 3830895 2005-12-19 19:27 JavaEwe.zip
-rw-r--r-- 1 kalle kalle 2748046 2005-12-19 16:52 JewelData.jar
-rw-r--r-- 1 kalle kalle  254444 2005-11-26 23:53 Jewel.ewe
-rw-r--r-- 1 kalle kalle      47 2005-01-20 18:44 RunJewel.bat
-rwxr-xr-x 1 kalle kalle      47 2006-07-24 21:30 runjewel.sh
runjewel.sh habe ich mir selbst aus runJewel.bat erzeugt.

In dem Verzeichnis lib die folgenden Dateien rekursiv auspacken (.jar-Files sind zip-Dateien, falls der Entpacker muckt, einfach temporär in .zip umbenennen)
- ewesoft.zip
- EwesoftRegex.zip
- HTML.zip
- openmap.jar
Es gibt dann die Unterverzeichnisse com, ewesoft und HTML
- Script buildexe.bat bzw. ./buildexe.sh aufrufen, es wird ein Verzeichnis CacheWolf erzeugt mit Unterverzeichnissen für die unterschiedlichen Plattformen.
- mit dem Script runjewel können Änderungen an der Datei cwberlios.jnf vorgenommen werden.
 

pfeffer

Geowizard
ich hatte dazu schon mal folgende ergänzungen formuliert:
=====
So, habe es nun endlich geschafft nicht nur mit den batchdateien, soindern mit eclipse das Projekt zu kompilieren... hat einen ganzen Tag gedauert...
grobe Anleitung:
-----------
svn ohne trunk eingeben
trunk auswählen und runterladen
"Check out as a project confuguered using the New Projet Wizard"
Java-Applikation auswählen

Projektname: "cachewolf"

unter "run..." folgendes Eintragen:
Main class: "Ewe"
Argeumts: "CacheWolf.CacheWolf"
Working directory: "${workspace_loc:cachewolf/work}"

Classpath alle Dateien angeben, die unter lib durch svn herunter geladen wurden, eintragen

einmal getRes.bat ausführen
=====
Ist das so im Wesentlichen richtig?

insgesamt wäre es schön, wenn man zu einer Schritt für Schritt Anleitung oder so käme... naja.. aber vielleicht lohnt sich die Arbeit auch nicht, eine solche zu erstellen?

jedenfalls wäre es schön, diese Angaben auch auf cachewolf.berlos.de noch zu ergänzen.
Gruß,
Pfeffer.
 

pfeffer

Geowizard
habe grad gefunden, dass man auch in der Java-Vm und damit in ecplise dern COM-Port zum laufen kriegen kann.

Dazu aus dem Verzeichnis Ewe/programs die Dateien:
java_ewe.dll
ewex_registry.dll

in das Verzeichnis cachewolf/lib kopieren und in ecplise das verezichnis lib unter /Porject/Properties/Java Build Path/Source/Native Library Location/ mit Klick auf "edit" eintragen.

Gruß,
Pfeffer.

PS: Mist, dass ich das erst jetz heraus gefunden habe... es hätte mir doch einiges an Debug-aufwand ersprt, wenn ich das schon länger gewusst hätte ;-)
 

pfeffer

Geowizard
evtl. sinnvoll kann noch der Link sein: http://www.ewesoft.com/IDEConfiguration/Eclipse.htm

MIST: Ich bin irgendwie zu doof, jetz habe ich mir die Konfiguration in Eclipse zuerschossen und bekomme sie nicht wieder hin :-(

Gruß,
Pfeffer.
 
OP
Kalli

Kalli

Geowizard
pfeffer schrieb:
habe grad gefunden, dass man auch in der Java-Vm und damit in ecplise dern COM-Port zum laufen kriegen kann.

Dazu aus dem Verzeichnis Ewe/programs die Dateien:
java_ewe.dll
ewex_registry.dll

in das Verzeichnis cachewolf/lib kopieren und in ecplise das verezichnis lib unter /Porject/Properties/Java Build Path/Source/Native Library Location/ mit Klick auf "edit" eintragen.
Bei mir hat das schon geklappt, wenn ich nur die Datei java_ewe.dll in das Verzeichnis kopiert habe, in der eclipse das Programm ausführt, also in \work. Die Datei wird geladen, wenn man auf den COM-Port zugreift. Dies funktioniert allerdings nur unter Windows, bei anderen OSen muss man die native Version (nicht die java-Version) nehmen, da sind dann die entsprechenden Routinen eingebaut.
 

pfeffer

Geowizard
so... also... nachdem ich mit Kalli telefoniert habe und er mir noch einen Tipp per Mail hat zu kommen lassen, hier noch ein Tipp, wo dran es bei mir lag, dass es nicht lief mit ecipse:

die ewe.jar muss unbedingt _über_ cachewolf im classpath unter /run/run.../Java Application/<run_config>/classpath stehen, sonst gibt es Fehlermeldungen wie
"Exception in thread 'main' java.lang.NoSuchFieldError: lockObject
at ewe.applet.Applet.<clinit>(Applet.java)
at Ewe.main(Ewe.java)",
aber auch :
"The project was not built since its build path is incomplete. Cannot find the class file for java.awt.Graphics. Fix the build path then try building this project"
ist möglich, was unter "problems" erscheint. Wenn man auf "trotzdem starten" klickt, erscheint folgende Fehlermeldung bei falscher Reihenfolge im Classpath:
"java.lang.Exception: Class not found: CacheWolf.CacheWolf
at ewe.applet.Applet.getMainWindow(Applet.java:123)
at ewe.applet.Applet.init(Applet.java:196)
at ewe.applet.Applet.main(Applet.java:725)
at Ewe.main(Ewe.java:5)"

Hoffe, das kann anderen helfen... es hat mich fast verrückt gemacht... :-(

Gruß,
Pfeffer.

PS: mit java_ewe.dll und hast Du recht, Kalli, es genügt sie in das /work-Verzeichnis zu kopieren. Übringens ist sie zu finden in "Ewe149-Developer-SDK.zip" im Verzeichnis "programs".
 

MiK

Geoguru
Ich habe schon ewig nichts mehr in Java programmiert und in Eclipse noch gar nicht.
Einige Klippen konnte ich schon umschiffen, aber jetzt bekomme ich folgenden Fehler:

The project was not built since its build path is incomplete. Cannot find the class file for java.awt.Graphics. Fix the build path then try building this project

Wo stelle ich solche generellen Sachen in Eclipse ein? Konnte es bisher nicht finden.
 
OP
Kalli

Kalli

Geowizard
Unter Project->Properties->Java Build Path, Reiter Libraries

Unter Window->Preferences->Java Build Path kann man die eher allgemeinen Sachen einstellen.

Ein Post hätte gereicht :D
 

pfeffer

Geowizard
das ist genau das Problem mit der Reihenfolge... der imports der libs.
Am besten Du checkst Dir nochmal .classpath aus, dort ist fast die richtige Reihenfolge drin (ganz geht es nicht).
Dannach musst Du noch wie in meinem Beitrag oben vom 2006-12-18, 02:21 beschrieben, die ewe.jar nach oben beschrieben. dort steht doch genau, wo man es einstellen muss: unter run usw.

Gruß,
Pfeffer.
 

MiK

Geoguru
Ich habe es mittlerweile auch fast hinbekommen.

Mein erstes Problem ist, dass bei mir in Eclipse an der Stelle, in der man die Reihenfolege festlegen soll, die Up/Down Buttons deaktiviert sind und ich habe keine Ahnung, warum.

Wenn ich nun die Rehenfolge von Hand in der .classpath festlege, habe ich folgendes Problem:
Schiebe ich die ewe.jar nicht nach oben, dann kann ich kompilieren, bekomme dann aber beim starten die Fehlermeldung, die Du beschrieben hast.
Schiebe ich dann die ewe.jar nach oben, kann ich problemlos per "Run" starten. Wenn ich dann aber neu kompilieren möchte (z.B. mittels Clean), bekomme ich wieder den Fehler mit java.awt.Graphics.

Ciao

MiK
 

MiK

Geoguru
OK, ich hab meinen Fehler gefunden. Da die .JARs schon unterhalb von Cachewolf standen habe ich sie nicht nochmal zum classpath hinzugefügt (unter Run...). Jetzt habe ich sie nochmal extra hinzugefügt und damit konnte ich dann auch die ewe.jar dort nach oben schieben. Jetzt funktioniert alles.

Jetzt bräuchte ich nur noch eine Dokumentation zu den ewe-GUI-Elementen. http://www.ewesoft.com/docs/EweDevelopment/index.htm sagt irgendwie nicht mehr als "es gibt dieses und jenes". Aber keine weiteren Beschreibungen der Klassen.

Ciao

MiK
 
OP
Kalli

Kalli

Geowizard
Hi,

am besten holst Du dir die API-Doku: http://www.ewesoft.com/Downloads/Ewe149-Developer-API.zip

Und wenn Du Lust hast mitzumachen oder auch schon einen Bug gefixt hast, einfach ein PN an Bilbowolf oder mich und wir geben Dir schreibenden Zugriff auf das SVN-Repos und nehmen dich mit ins Team auf.
 

pfeffer

Geowizard
Hallo!

seit ca. SVN 420 reicht der Heap, der bei mir standardmäßig für CacheWolf beim Debuggen mit Eclipse verwendet wird, für die MovingMap häufig nicht aus. Interessanterweise ist das kein Problem mit den vorhandenen EInstellungen in der ewe-Vm, auch nicht auf dem PocketPC.

Damit dennoch ein problemloses debuggen möglich ist, ist folgende Einstellung bei mir notwendig:
-Xmx120m eintragen unter /run/run.../Arguments/VM arguments

Gruß,
Pfeffer.
 

mirabilos

Geocacher
Okay, ihr haltet mich jetzt für bekloppt, aber… ich habs geschafft,
CacheWolf mit gcj zu kompilieren und ohne Jewel mit Ewe direkt
zu testen – weil ich kein Sun Java™ habe…

Entweder via compile-gcj.sh:
Code:
#!/bin/sh
gcj -C --encoding=windows-1252 --classpath=./bin:./src:./lib/CompileEwe.zip:./lib/ewesoft.zip:./lib/EwesoftRegex.zip:./lib/HTML.zip:./lib/openmap.jar  -d ./bin/ ./src/CacheWolf/*.java ./src/exp/*.java

Übrigens /bin/sh und nicht /bin/bash, die hab ich nämlich auch nicht.

Oder mit einem selbstgeschriebenen Makefile… ja, das geht.

Dann habe ich folgendes gemacht:
• Verzeichnis cp erstellt
• Aus dem Verzeichnis lib/ die EwesoftRegex.zip, HTML.zip, ewesoft.zip und openmap.jar dort reingeunzippt
• Symlink to ../resources/attributes in work/ erstellt
• cd work; ewe -cp ../bin:../cp:../resources CacheWolf.CacheWolf

Tut soweit. Hab zwar noch den File.List bug, aber Pfeffer will ja
den Fix dafür committen.
 

pfeffer

Geowizard
sehe ich das richtig:
Du hast ein *nix (BSD oder Linux) binary aus dem Cachewolf gemacht, dass ohne ewe usw. direkt lauffähig ist?

Das wäre ja richtig cool! (will das auch für Windows haben ;-)

Schöne Grüße,
Pfeffer.
 

mirabilos

Geocacher
Nein, das liest Du falsch.

Ich habe zwei Sachen gebaut:
• CacheWolf mit gcj übersetzt: *.java -> *.class
• Ewe mit gcc übersetzt: *.c, *.cpp, ewe.ewe -> ewe

Neu ist halt, daß das selbstkompilierte ewe nicht segfaultet,
und daher auch an eine Übersetzung z.B. für das OpenMoko
denkbar ist (bzw. um genau zu sein arbeiten wir bereits dran…),
und daß man CacheWolf ohne Sun JDK übersetzen kann.

PS: Hab mich dann doch mal bei BerliOS (Jörg Schilling *kotz*) angemeldet.
 

Sammy Raider

Geocacher
Hallo Leute,
habe mir die aktuelle SVN (840) heruntergeladen und bekomme nach dem Compilieren und start der Cachewolf.exe (static-linked)folgende Meldung:
Code:
java.lang.NoClassDefFoundError: ewesoft/xml/MinML
        at CacheWolf.Global.<clinit>(Global.java:10)
java.lang.NoClassDefFoundError: ewesoft/xml/MinML
        at CacheWolf.Global.<clinit>(Global.java:10)
Kann mir jemand helfen, wo ich hingreifen muß, um dieses Problem zu beheben?
Danke im Voraus Gruß Sammy
 

mirabilos

Geocacher
Code:
cd lib
unzip EwesoftRegex.zip
unzip HTML.zip
unzip ewesoft.zip
unzip openmap.jar

Dann nochmal probieren.
 
Oben