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

[DEV] per startskript automatisch java oder .exe verwenden?

pfeffer

Geowizard
Hi!

Ich habe mal eine kleine cachewolf.bat geschrieben, die automatisch die java-variante verwendet, wenn dies möglich ist:
Code:
@echo off
rem if a java vm is installed and cachewolf.jar exists, use it
rem otherwise use cachewolf.exe (= cachewolf.ewe with integrated ewe-vm)
if exist CacheWolf.jar (
java -version 2>nul
if not errorlevel 1 (
java -cp CacheWolf.jar ewe.applet.Applet CacheWolf.CacheWolf
) else (
cachewolf.exe
) ) else (
cachewolf.exe
)
Was dadran irgendwie hässlich ist: es bleibt ein leeres DOS-Fenster offen. Ich habe auf die Schnelle keine Möglichkeit gefunden, das zu vermeiden. Vielleicht muss man irgendwas anderes als ein Batch-Skript verwenden. Habe auch schon überlegt, diese Prüfung in die .exe einfach mit einzubauen?

Man müsste in Zunkunft dann in der Windows-Version natürlich standardmäßig die .jar mit ausliefern.

Was meint Ihr?

Gruß,
Pfeffer.
 

arbor95

Geoguru
hast du schon mal mit
start
und
exit
experimentiert ?

mit start cachwolf.exe verschwindet das dos-fenster
 
OP
pfeffer

pfeffer

Geowizard
ja, danke! Außerdem muss man noch javaw verwenden, sonst macht java wieder eins auf.
Code:
@echo off
echo "Starting Cachewolf..."
cd %~d0%~p0
rem if a java vm is installed and cachewolf.jar exists, use it
rem otherwise use cachewolf.exe (= cachewolf.ewe with integrated ewe-vm)
if exist CacheWolf.jar (
javaw -version 2>nul
if not errorlevel 1 (
start javaw -cp CacheWolf.jar ewe.applet.Applet CacheWolf.CacheWolf
) else (
start cachewolf.exe
) ) else (
start /b cachewolf.exe
)
exit
Funktioniert :) Ich checke das mal ein.

@greiol: passt Du das Ant-Skrip entsprechend an?

Gruß,
Pfeffer.
 

MiK

Geoguru
Sind wir uns denn sicher, dass die Java-Version immer die bessere ist? Wenn ich mich richtig erinnere wurde berichtet, dass das Speicherproblem beim Aktualisieren vieler Caches bei der Exe nicht so stark auftritt.
 

arbor95

Geoguru
ich habe auch den Eindruck, dass die win32 Version z.B beim Löschen von Caches viel schneller ist als die Java - Version. Ansonsten nutze ich die win32 - Version und habe da noch keine Speicher- oder andere Probleme festgestellt. Aber das hängt ja möglicherweise von der Art der Nutzung ab.
 
OP
pfeffer

pfeffer

Geowizard
das Löschen von 238 Caches mit java hat bei mir - zum Test - gerade 8 Sekunden gedauert (ca. 30 Caches pro Sekunde). Wie lang ist das mit der .exe?

Irgendwie kann ich mir nicht vorstellen, dass in der sun vm eine Speicherleck sein soll.

Gruß,
Pfeffer.
 

arbor95

Geoguru
Vielleicht hängt das damit zusammen, dass ich die Java-Version fast nur über EasyEclipse nutze und es da noch hakt. Ansonsten hatte ich auch den Eindruck, dass die Java-Version unter Windows mindestens so gut geht wie die win32 Version

Also wegen mir kann das aktiviert werden. Ich weiss ja, wie ich gegebenefalls umschalten kann!
 

maierkurt

Geowizard
Ich habe mich für die jar-Version entschieden, da sie schneller ist (das Laden der Caches am Anfang geht ruckizucki).
Mit der exe-Version kann ich z.B. nicht über ca. 5200 Cache mittels Template exportieren, hier reicht der Speicher nicht. Mit der jar-Version klappt es ohne Probleme.

Gruß, maierkurt
 
OP
pfeffer

pfeffer

Geowizard
Ja, das Einlesen der Caches beim Start geht gefhlte 5-10mal so schnell mit der java-Version.

hmm - ja klar, am eingeschalteten Debugger kann das durchaus liegen.
Wobei ich solche Probleme nicht habe in eclipse (der Test grad war auch aus eclipse).
Aber ich habe auch in den VM-Arguments eingetragen "-Xmx128M" vielleicht sollte man das bei dem Batch-Aufruf auch machen?

Die Java-VM ist deswegen so schnell, weil sie JIT nutzt, d.h. den den java-binär-code in nativen binär-code übersetzt, so dass danach das meiste so ausgeführt wird, als sei es für diesen Rechner kompiliert (wie könnte Eclipse sonst so schnell sein).

Gruß,
Pfeffer.
 

MiK

Geoguru
Vielleicht stimmt das mit den größeren Speicherproblemen der Javaversion auch nicht. Hatte hier nur mal jemand berichtet. Ich selbst habe das nicht überprüft.

Der Grund warum ich meist die Exe benutze ist, dass ich sie direkt von meiner SD-Karte auf verschiedenen Rechnern starte und die Java-Version nicht mit relativen Pfaden zum Datenverzeichnis zurecht kommt.
 
OP
pfeffer

pfeffer

Geowizard
probierst Du das mit den relativen Pfaden bitte mal mit der .bat?
sie wechselt in das cachewolf-verzeichnis, so dass ich die Hoffnung habe, dass es dann auch mit java klappt.

Gruß,
Pfeffer.
 

MiK

Geoguru
Das Datenverzeichnis scheint er erstmal zu finden. Er bietet mir die Auswahl mit meinen Profilen an. Aber wenn ich dann eines öffne, bleibt die Liste leer. Ändere ich den Pfad auf absolut, dann funktioniert es auch in der Java-Version.
 
OP
pfeffer

pfeffer

Geowizard
ok, schon mal etwas.
Das sollte sich beheben lassen.
Es geht um den Pfad zum Datenverzeichnis, das Du in den pref.xml relativ angegeben hast?
wie hast Du es angegeben?
"../meineDaten/geocache Daten"?

Gruß,
Pfeffer.
 

greiol

Geoguru
MiK schrieb:
Vielleicht stimmt das mit den größeren Speicherproblemen der Javaversion auch nicht. Hatte hier nur mal jemand berichtet. Ich selbst habe das nicht überprüft.
es ist ja nicht die java version die ein speicher problem hat, sondern der wolf ;)
für größere spider projekte sind die default memory settings der jvm etwas knapp, da irgendwo memory nicht freigegeben wird. die exe verbrät zwar auch memory, nimmt aber einfach mehr in beschlag weil sie nicht in einem sandkasten steckt.

was mich viel mehr irritiert:
zu welcher version soll denn das script gehören? in der pocketpc version steckt kein jar. in der windows version steckt kein jar und in der java version steckt keine exe. sprich: mit keinem der downloadpakete bringt das script einen vorteil.
 

arbor95

Geoguru
im Ausgabeverzeichnis cachewolf/jar steht nach dem Lauf von buildexe.bat eine achewolf.bat die nur den rudimentären Aufruf wiederspiegelt, aber nicht deinen commit.
 
OP
pfeffer

pfeffer

Geowizard
greiol schrieb:
zu welcher version soll denn das script gehören? in der pocketpc version steckt kein jar. in der windows version steckt kein jar und in der java version steckt keine exe. sprich: mit keinem der downloadpakete bringt das script einen vorteil.
In das Windows-Paket. Dort solle die cachewolf.bat mit rein und ebenfalls die cachewolf.jar - so habe ich mir das vorgestellt.
Ich habe die cachewolf.bat in res_noewe commited, ich weiß nicht, ob das richtig war. Du kannst sie gerne an einen passenden Platz (paltform-dep?) verschieben.

Gruß,
Pfeffer.
 

Harry1999

Geocacher
Wenn man die PC-Variante des CW auf einen Stick bzw noch besser auf nem Windowsmobile-Handy hat (hier Pfad cachewolf-win32), dann kann man folgendermassen den Laufwerksbuchstaben finden und entsprechen cw anstarten:
<-
@echo off
pushd %~dp0
subst Z: %~d0\.
cd /D Z:\cachewolf-win32
cachewolf.exe
subst z: /d
->
Grüße, Harry1999
 

greiol

Geoguru
z: sollte zwar eigentlich nur während des netzwerklogins belegt sein, aber anwender kommen manchmal auf die tollsten ideen. vielleicht könnte man vor der zuweisung nachsehen ob da nicht doch schon was dranhängt?
 

Harry1999

Geocacher
war nur als beispiel gedacht... die weiche Java - exe ist ja auch nicht drin. Hier ein Beispiel mit abfrage, ob z ,y oder x frei ist... irgendeiner der dreien wird wohl schon frei sein...
man kann das beliebig komplex machen :)

<-
@echo off
pushd %~dp0

if not exist z:\. goto myz
if not exist y:\. goto myy
if not exist x:\. goto myx

:myz
subst Z: %~d0\.
cd /D Z:\cachewolf-win32
cachewolf.exe
subst z: /d
goto ende

:myy
subst Y: %~d0\.
cd /D Y:\cachewolf-win32
cachewolf.exe
subst Y: /d
goto ende

:myx
subst x: %~d0\.
cd /D x:\cachewolf-win32
cachewolf.exe
subst x: /d
goto ende

:ende
->
 
Oben