Java-Programme auf einem Zielrechner ohne JRE direkt von einer CD starten

Aus Byte-Welt Wiki
Zur Navigation springenZur Suche springen

Du hast ein Java-Programm, welches du gerne deinen Kunden, Freunden oder Bekannten vorstellen möchtest, weißt aber nicht, ob eine und welche JRE-Version auf deren Rechner installiert ist?

Dann kann dir diese Anleitung dabei helfen, eine CD zu erzeugen, die nach dem Einlegen ins CD-Laufwerk automatisch auf einem Windows-System dein Java-Programm startet.
Auf die gleiche Art funktioniert das im Folgenden Beschriebene bspw. mit einem USB-Stick.

Das Interessante daran: Der Zielrechner braucht nicht mal eine JRE installiert zu haben, denn die brennen wir gleich mit auf die CD. 

Schritt 1 - Vorbereitung

Du erstellst dir auf deiner Festplatte ein temporäres Verzeichnis, in welches du zunächst dein JRE-Verzeichnis hinein kopierst. Dann erstellst du in diesem Verzeichnis eine Datei namens autorun.inf mit folgendem Inhalt:

 [autorun] 
 open=autostart.bat 
 icon=icon.ico

Das optionale Icon muss hier im Verzeichnis liegen, wo auch die autorun.inf zu finden ist (Rootverzeichnis) und wird angezeigt, sobald die CD vom Laufwerk eingelesen wird. Sollte die CD unter mehreren Betriebssystemen starten können, so ist es wichtig, die JREs für das jeweilige Betriebssystem in einen separaten Ordner zu kopieren. Die Startverknüpfung wird dann, wie im Folgenden beschrieben, mit einem Batch-Skript hergestellt.

Schritt 2 - Das Startskript

Außerdem brauchst du noch ein Shell-Skript (unter Windows eine Batch-Datei) das dein Programm startet. Unter Windows benennst Du die Batch-Datei am besten autorun.bat. Unter Linux muss die Datei autorun heißen. Mit einem Texteditor erzeugst du dazu eine ganz normale Textdatei mit folgendem Inhalt:

Für Windows (autorun.bat)

 1  @echo off
 2 
 3  rem Bitte den Pfad zur JRE anpassen!
 4  set CDJRE=.\java_vm\jre1.6.0_12\bin
 5 
 6  rem Start einer jar-Datei
 7  start %CDJRE%\javaw.exe -jar DeinJar.jar
 8 
 9  rem Start einer class-Datei
10  rem start %CDJRE%\javaw.exe DeinProgramm
11 
12  rem Umgebungsvariable wieder löschen
13  set CDJRE=
14 
15  rem Console schließen
16  exit

Für Linux (autorun)

 1  #! /bin/bash
 2 
 3  # change CWD to the directory this script is placed
 4  case "$0" in
 5    /*) self=$0 ;;
 6     *) self=$(pwd)/$0 ;;
 7  esac
 8  selfdir=$( (cd "${self%/?*}" && pwd) )
 9  [ "${selfdir}" ] || exit 1
10  cd "${selfdir}"
11 
12  # The CD's very own JRE/bin directory
13  # TODO: Pfad anpassen!
14  jre_bin="./java_vm/jre1.6.0_12/bin"
15 
16  # Start a selfcontained JAR file
17  exec "${jre_bin}/java" -jar DeinProgramm
18 
19  # Start a Main class from the classpath
20  # TODO: Diese Zeile statt der vorhergehenden benutzen, wenn
21  # nicht aus einem eigenständigen JAR gestartet werden soll
22  # TODO: Klassennamen und classpath eintragen
23  # exec "${jre_bin}/java" -cp MeinClassPath mein.package.MeineMainKlasse

Die Skripte müssen natürlich an den ausgewiesenen Stellen noch an deine Gegebenheiten angepasst werden und müssen im Wurzelverzeichnis (zum Icon und der autorun.inf) abgelegt werden.

Schritt 3 - Jar-Datei und Start-Skript

Kopiere nun noch dein Programm, welches vorzugsweise eine JAR-Datei sein sollte, hinzu. Es kann aber auch eine normale .class-Datei sein. In dem Fall muss in der Batch-Datei die Zeile 7 auskommentiert und Zeile 10 durch entfernen des remark (rem) aktiviert werden, bzw. Zeile 18 des Linux Shell-Skripts mit '#' auskommentiert und Zeile 24 durch entfernen des Kommentarzeichens '#' aktiviert werden. Auch Packages sind möglich, dementsprechend sind u.U. nur die Shell-Skripte anzupassen.

Schritt 4 - Kontrolle der Verzeichnisstruktur

Zur Kontrolle: Deine Verzeichnisstruktur sollte jetzt folgendermaßen aussehen:

[.] 
 |  icon.ico 
 |  autorun.bat 
 |  autorun.inf
 |  autorun
 |  DeinProgramm.jar 
 | 
 |__[java_vm] 
      | 
      |__[jre1.6.0_12] 
            | 
            |__[bin] 
            | 
            |__[lib]


Schritt 5 - CD brennen

Das Ganze brennst du nun mit einem Brennprogramm deiner Wahl als Daten-CD.

-- L-ectron-X (03.12.2005, 10:03)