Startjar

Version 2.2


Ein kleines aber sehr effektives Tool, um
Java Applikationen-/en mit einer Java JAR-Datei zu starten.



Um eine Java - Anwendungen auszuführen, gibt es je nach Betriebssystem die unterschiedlichsten Möglichkeiten. Die Startjar setzt auf die Philosophie der Plattformunabhängig von Java.

Sie kann andere Java Anwendung-/en, welche als Java JAR-Datei gepackt sind ausführen. Sie ist flexibel einsetzbar, da sie mittels einer gleichnamigen Konfigurationsdatei von außen gesteuert werden kann.
Großer Vorteil dieses Konzeptes ist es, dass unabhängig vom Betriebssystem immer die gleiche Startdatei benutzt werden kann.

Es werden verschiedenste Szenarien unterstützt. Einfachste Ausführung ist eine andere JAR- Bibliothek zu starten, welche in der Manifest-Datei die Main-Class konfiguriert hat. Oder die Ausführung mehrerer Anwendungen, welche in nur einer JAR- Bibliothek gepackt sind. Weiter besteht die Möglichkeit, eine bestimmte in der Konfigurationsdatei vorgegebene Java Virtual Machine (VM) für die Ausführung zu benutzen.

Ein simples Beispiel,
nehmen wir an es wird ein USB Stick benutzt, auf dem wir die gleiche Java-Applikation auf unterschiedlichsten Betriebssystemen benötigten. So ist es ein eindeutiger Vorteil, wenn zur Ausführung auch immer die gleiche Startdatei benutzt wird. Denkt man nur daran, wenn es mehrere Anwendungen sind und diese in einem Menü zusammen gefasst werden sollen, so liegt der Vorteil diese Konzepts auf der Hand.




Warum eine Java Anwendung mir einer JAR Datei starten?

Um der Philosophie von Java treu zu bleiben, was da heißt Plattformunabhängigkeit. Die auszuführende Datei mit welcher die Applikation gestartet werden soll ist immer die gleiche, egal auf welchem Betriebssystem diese ausgeführt wird.


Welche Möglichkeiten gibt es um Java Applikationen zu starten?

  1. Man kann die Applikation von einem Konsolen-Fenster aus starten, durch Eingabe der dementsprechenden Befehlssyntax.
    (nicht sehr komfortable)

  2. Man kann für die entsprechende Befehlssyntax einen Shell-Skript oder eine Batch-Datei erstellen und die Applikation über diesen dann starten.

    • Unter Unix kein Problem da der Shell-Skript, sich auf den unterschiedlichsten Distributionen ausführen läßt und dieser auch im Hintergrund ausgeführt wird.
      (komfortable)

    • Unter Windows eigentlich auch, wenn es sauber arbeiten würde. Aber leider öffnet sich immer ein Konsolen-Fenster dabei, und bleibt unter manchen Versionen auch noch geöffnet.
      (nicht sehr komfortable)

  3. Man kann ein ausführbares Programm erstellen, heißt aber es wäre keine Plattformunabhängigkeit mehr gegeben.

    • Unter Windows gibt es Beispielsweise Programme welche aus Bytecode Maschinencode erstellen (z.B. Excelsior JET (kostenpflichtig, oder nur Trail-Version), oder die Möglichkeit Java Programme in C++ Quellcode umwandeln (z.B. Java2CPP Freeware).
      (nicht sehr komfortable, da teilweise sehr aufwendig, und es zu Übersetzungsfehlern kommen kann.)

  4. Nächste Möglichkeit die JAR Datei selbst ausführbar machen, durch einen Eintrag in der Manifest-Datei, welche die Hauptklasse dann ausführt.
    (komfortable, es kann aber nur eine Klasse ausgeführt werden)

  5. Oder und jetzt kommt die Startjar ins Spiel, eine JAR Datei welche mit einer Konfigurationsdatei versehen ist. Großer Vorteil es bedarf kein Eintrag in der Manifest-Datei, und es können mehrere Hauptkassen angesprochen werden, welche alle in einer Hauptbibliothek (JAR-Datei) liegen.
    (komfortable, da sehr flexibel und Plattformunabhängig)


Voraussetzungen der Startjar

Es wird eine bestimmte Verzeichnisstruktur vorausgesetzt, das vorhanden sein einer Konfigurationsdatei und die Position der benötigten Dateien in der Verzeichnisstruktur werden vorausgesetzt.

Bedingungen:
  1. Das Verzeichnis mit der Applikation muss ein Verzeichnis <bin> und ein Verzeichnis <lib> haben.

  2. Im Verzeichnis <bin> liegen die Startdatei-/en und die Konfigurationsdatei-/en.

  3. Die Konfigurationsdatei trägt immer den gleichen Namen wie die dazugehörige Startjar. Mit Ausnahme des Suffix (Dateiendung .conf). Wichtig die Groß- und Kleinschreibung beachten.

  4. Im Verzeichnis <lib> liegt die JAR Datei-/en mit der Applikation-/en


Wie wird die Starjar benutzt

Als erstes werden die Verzeichnisse <bin> und <lib> in der Verzeichnisstruktur der Applikation erstellt.

Dann wird irgendeine Startjar in das Verzeichnis <bin> kopiert. Dieser kann dann der entsprechende Name gegeben werden.

Danach wird die Konfigurationsdatei erstellt, wobei diese den gleichen Namen wie die entsprechende Startjar bekommt. Mit der einen Ausnahme des Suffix, heißt sie muss die Dateiendung .conf tragen. Wichtig dabei auf die Groß- und Kleinschreibung achten.

Dann wird die Konfigurationsdatei editiert und die benötigten Parameter gesetzt.

Abschließend wird die JAR- Bibliothek-/en (Datei-/en) mit den Applikation-/en in das Verzeichnis <lib> kopiert.


Die Funktionsweise

Die Ausführung erfolgt intern in drei Schritten:
  1. Schritt:
    Es wird nach der Ausführung der eigene Name inklusive absolutem Pfad aufgelöst.

  2. Schritt:
    Der Name der Konfigurationsdatei wird gesetzt, eingelesen und die Parameter werden übernommen und geprüft.

  3. Schritt:
    Die Befehlssyntax wird zusammen gestellt und die Applikation wird ausgeführt.

Tritt während der Aufführung ein Fehler auf, so wird dieser in einer Mitteilungsbox ausgegeben. Zur Verfolgung von Fehlern die aus der Konfigurationsdatei stammen könnten, kann die Startjar an einer Konsole mit dem Parameter -verbose oder nur -v ausgeführt werden.


Funktionsweise Startjar


Abb. Funktionsweise Startjar



Die Konfigurationsdatei Parameter

Parameter Voraussetzungen

Der entsprechende Parameter wird gesetzt und der Wert kommt daneben. Parameter und Wert sind durch ein Leerzeichen getrennt. Die Konfigurationsdatei wird intern Zeilenweise eingelesen, heißt der Wert muss immer in der selben Zeile stehen, wie der Parameter.

Beispiel Konfigurationsdatei


# Startjar Version 2.2
# configuration-file for start-application.

# JAVA_HOME_WIN is for Windows
# JAVA_HOME_LIN is for Linux or other system
# both is the absolute path to java (if not set system
# environment, otherwise  is not required)
#JAVA_HOME_WIN C:\Programme\Java\jdk1.6.0_02\bin\javaw.exe
#JAVA_HOME_LIN /usr/java/jdk1.6.0_02/bin/java

# jarfile is Jarfile with all classes
jarfile MyApplication.jar

# classpath is set true, replace parameter -jar with -classpath
classpath true

# app is the Application (main class)
app woga.example.MainFrame

# param is any parameter
param -Dfile.encoding=iso-8859-1

# vmmemmin is the min memory for VM
vmmemmin 32

# shell is the shell file for unix
shell start.sh

# cmdshell is the shell command for unix (default is 'sh')
#cmdshell sh
  	


Parameter

WICHTIG:
unter Unix startet die Startjar die Anwendung durch anklicken nur, wenn sich im Pfad keine Leerzeichen befinden. Ist ein Leerzeichen im Pfad muss zum starten die Konsole benutzt werden.


Beispiel Skripte für eine Mehrfach - Anwendung

Nehmen wir als Beispiel einen Geburtstagswarner.

Die Applikation trägt den Namen Birthday und hat zwei Hauptklassen alle Klassen befinden sich in einer Bibliothek ( Birthday.jar).

Die eine Hauptklasse den eigentlichen Warner, kommt in den Autostart des Betriebssystem. Sie erzeugt eine Bildschirmausgabe, wenn ein Geburtstag in der Datenbank gefunden wurde. Die Startjar hierfür nenne wir dementsprechenden autostart.jar und die Konfigurationsdatei autostart.conf.

Die zweite Hauptklasse ist ein Grafische Oberfläche (GUI). Mit welcher die Datenbank gepflegt wird, sowie die Einstellungen für den Warner konfiguriert werden. Die Startjar für das GUI nenne wir dementsprechenden edit.jar und die Konfigurationsdatei edit.conf.

Verzeichnisstruktur

Verzeichnisstruktur


Konfigurationsdateien

autostart.conf

# Startjar Version 2.2
# configuration-file for start-application.
#
# Birthday - Autostart
#
# Start file for java VM

# JAVA_HOME_WIN is for Windows
# JAVA_HOME_LIN is for Linux or other system
# both is the absolute path to java (if not set system
# environment, otherwise  is not required)
#JAVA_HOME_WIN C:\Programme\Java\jdk1.6.0_02\bin\javaw.exe
#JAVA_HOME_LIN /usr/java/jdk1.6.0_02/bin/java

# jarfile is Jarfile with all classes
jarfile Birthday.jar

# classpath is set true, replace parameter -jar with -classpath
classpath true

# app is the Application (main class)
app woga.birthday.Birthday

# param is any parameter
param -Dfile.encoding=iso-8859-1

# vmmemmin is the min memory for VM
vmmemmin 32

# shell is the shell file for unix
shell edit.sh

# cmdshell is the shell command for unix (default is 'sh')
#cmdshell sh
  	


autostart.bat

@ECHO OFF
REM Birthday - Autostart
REM
REM Start file for windows

SET J_File=Birthday.jar
SET J_Main=woga.birthday.Birthday
SET J_Mem=-Xms32m

CD..
CD lib
IF NOT EXIST %J_File% GOTO errJar
javaw %J_Mem% -Dfile.encoding=iso-8859-1 -classpath ;%J_File% %J_Main%
GOTO end

:errJar
ECHO.
ECHO Error: The system cannot find the stated path (file).
ECHO Failed path:
CD
ECHO Failed file: %J_File%

ECHO.

:end
CD..
CD bin
SET J_File=
SET J_Mem=
SET J_Main=
  	


autostart.sh

#!/bin/sh
#
# Birthday - Autostart
#
# Start file for linux

J_File='Birthday.jar'
J_Main='woga.birthday.Birthday'
J_Mem=-Xms32m
J_Param=-Dfile.encoding=iso-8859-1
HDS_BIN=`dirname "$0"`
cd $HDS_BIN
cd ../lib

if test -e  $J_File;  then
  java $J_Mem $J_Param -classpath $J_File $J_Main
else
  echo ""
  echo "Error: The system cannot find the stated path (file)."
  echo "Failed path: "`pwd `
  echo "Failed file: $J_File"
  echo ""
fi
  	


edit.conf

# Startjar Version 2.2
# configuration-file for start-application.
#
# Birthday - Edit
#
# Start file for java VM

# JAVA_HOME_WIN is for Windows
# JAVA_HOME_LIN is for Linux or other system
# both is the absolute path to java (if not set system
# environment, otherwise  is not required)
#JAVA_HOME_WIN C:\Programme\Java\jdk1.6.0_02\bin\javaw.exe
#JAVA_HOME_LIN /usr/java/jdk1.6.0_02/bin/java

# jarfile is Jarfile with all classes
jarfile Birthday.jar

# classpath is set true, replace parameter -jar with -classpath
classpath true

# app is the Application (main class)
app woga.birthday.Edit

# param is any parameter
param -Dfile.encoding=iso-8859-1

# vmmemmin is the min memory for VM
vmmemmin 32

# shell is the shell file for unix
shell edit.sh

# cmdshell is the shell command for unix (default is 'sh')
#cmdshell sh
  	


edit.bat

@ECHO OFF
REM Birthday - Edit
REM
REM Start file for windows

SET J_File=Birthday.jar
SET J_Main=woga.birthday.Edit
SET J_Mem=-Xms32m

CD..
CD lib
IF NOT EXIST %J_File% GOTO errJar
javaw %J_Mem% -Dfile.encoding=iso-8859-1 -classpath ;%J_File% %J_Main%
GOTO end

:errJar
ECHO.
ECHO Error: The system cannot find the stated path (file).
ECHO Failed path:
CD
ECHO Failed file: %J_File%
ECHO.

:end
CD..
CD bin
SET J_File=
SET J_Main=
SET J_Mem=
  	


edit.sh

#!/bin/sh
#
# Birthday - Edit
#
# Start file for linux

J_File='Birthday.jar'
J_Main='woga.birthday.Edit'
J_Mem=-Xms32m
J_Param=-Dfile.encoding=iso-8859-1
HDS_BIN=`dirname "$0"`
cd $HDS_BIN
cd ../lib

if test -e  $J_File;  then
  java $J_Mem $J_Param -classpath $J_File $J_Main
else
  echo ""
  echo "Error: The system cannot find the stated path (file)."
  echo "Failed path: "`pwd `
  echo "Failed file: $J_File"
  echo ""
fi
  	



Systemvoraussetzungen:


Das Programm benötigt die Java 2 Virtual Machine (VM) (Standard Edition Runtime
Environment) (JRE) ab einer Version 1.4 oder höher.
Cup of Java Die aktuellste Version können Sie bei Sun Microsystems, Inc.
herunterladen (downloaden).
[URL: http://de.sun.com/ (http://www.sun.com/)]


Download:

Bitte lesen sie die Lizenzbestimmungen sorgfältig durch, bevor sie dieses Produkt herunterladen (downloaden) und verwenden.

Freeware (private und kommerzielle Nutzung)


Download
Beschreibung Datei
Lizenzbestimmungen (txt)
MD5: 3F51B84E8287AA19A3F6B73ABA06380F
Lizenz.txt (8 KB)  Lizenz
Dokumentation (txt)
MD5: 7E009EDA21C702EC2627043570A228F2
readme.txt (16 KB)  Readme
Dokumentation (pdf)
MD5: 40ACF86571DBD61F9491F5D383790EE8
startjar.pdf (224 KB)  startjar.pdf
Dokumentation (pdf)
MD5: B50BF3BCDD8EE6DC00B5DEE67C0318B6
des.zip (214 KB)  zip
Startjar mit Dokumentation (PDF)
MD5: B7430459ED8891485D59BBC80341636D
startjar_des.zip (228 KB)  zip
Startjar
MD5: 7452051F349ACC94428F21A72BEFB594
startjar.zip (20 KB)  zip