Java-Programme ohne installiertes Java nutzen

Aufgrund der erhöhten Risiken – und der nervigen Updatefrequenz – ist bei mir Java von allen Rechnern geflogen. Allerdings gibt es schon das ein oder andere Programm, dass in Java geschrieben ist, jetzt aber wertlos wurde, weil es halt ohne JRE nicht läuft. Zum Glück habe ich einen schlauen Bruder… .

Sehr konkret war die Heraus­forderung bei mir, dass ich durch die De­in­stal­la­tion von JRE nicht mehr mit Free­plane arbeiten konnte. Das tat weh. Im Plausch mit meinem Bruder Harald ließ der dann fallen, dass er ebenfalls vor diesem Problem stand, aber eine Lösung gefunden hatte. Nicht für Free­plane, sondern für ein eigenes Projekt, aber die Lösung ist übertragbar.

Im Grunde ist es recht einfach (sprich: Wenn man´s weiß…): Ein JRE in ein Unter­verzeichnis packen, den JRE-Pfad darauf setzen und die Java-Anwendung starten. Nach dem Beenden der Anwendung den Pfad wieder freigeben. Das wird als Batch­datei gespei­chert. Fertig.

Die erste Frage ist — natürlich: Wo bekomme ich ein JRE her? Die Antwort: Am einfachsten von einer Lösung, die genau diesen Weg beschreitet, z.B. [yED](SicherheitTipps & TricksWerkzeugeWindows). Da liegt nach der Installation ein Verzeichnis „jre“ im Programmverzeichnis, das einfach kopiert werden kann.

Dazu noch die erforderliche Batch-Datei (hier für Freeplane):

@echo off 
set CDJRE=.\\JAVA_VM\jre7\bin
set freeplanedir=%~dp0
set xargs=init.xargs
set defines= "-Dorg.freeplane.param1=%~1" "-Dorg.freeplane.param2=%~2" "-Dorg.freeplane.param3=%~3" "-Dorg.freeplane.param4=%~4" "-Dorg.freeplane.param4=%~5" "-Dorg.freeplane.param4=%~6" "-Dorg.freeplane.param4=%~7" "-Dorg.freeplane.param4=%~8" "-Dorg.freeplane.userfpdir=%appdata%\Freeplane"
set resdir="-Dorg.freeplane.globalresourcedir=%freeplanedir%resources/"
@echo on
java -Xmx512m "-Dorg.knopflerfish.framework.bundlestorage=memory" "-Dorg.knopflerfish.gosg.jars=reference:file:%freeplanedir%core/" %resdir% %defines% -jar "%freeplanedir%framework.jar" -xargs "%freeplanedir%props.xargs" -xargs "%freeplanedir%%xargs%"
start %CDJRE%\javaw.exe -jar freeplanelauncher.jar
set CDJRE=

Wobei die Zeilen 2, 11 und 12 die Magie sind, die anderen Zeilen stammen aus der „normalen“ Freeplane.bat. Für den jeweiligen Bedarf muss ggf. der Pfad angepasst werden (in yED liegt Java direkt in einem JRE-Verzeichnis) und natürlich muss die passende „*.jar“-Datei gestartet werden. Mit diesem Muster sollte das allerdings eine lösbare Aufgabe sein.

Update!

Die oben beschriebene Lösung lässt sich reduzieren: Ob die „nicht fett gedruckten“-Befehle in der Batch-Datei drin stehen oder nicht, macht keinen Unterschied. Aber es geht vor allem viel einfacher!

Die Lösung findet sich direkt bei Freeplane. Dort wird beschrieben, wie Freeplane portabel wird. Das wird über PortableApps realisiert, lässt sich jedoch absolut trivial für eine Festplatteninstallation nutzen, die ggf. problemlos woanders hinkopiert werden kann.

Was ist zu tun:

  1. Zwei Dateien herunter laden:
    • Portable Java
    • Freeplane Portable
  2. Ein „Basisverzeichnis“ aussuchen, in das beide Pakete installiert werden. Wichtig: Am Ende muss es ein „CommonFiles“ Verzeichnis geben, in dem es den Ordner „Java“ gibt und auf der Ebene des Ordners „CommonFiles“ liegt der Freeplane-Ordner (Name egal).
  3. Fertig!

Der Charme dieser Lösung besteht vor allem darin, dass „FreeplanePortable.exe“ für den Dateityp «.mm» registriert werden kann, womit ein Doppelklick die Freeplane-Datei öffnet. Die Java-Installation in „CommonFiles“ lässt sich — natürlich — problemlos für eigene Anforderungen nutzen. Da ka