ShellScript: classpath füllen, JavaProgramm ausführen
Hallo Leute,
ich habe mir ein kleines ShellScript geschrieben,
das aus zwei Verzeichnissen *.class und *.jar Files
zu meinem String zusammenfügt, der den ClassPath
repräsentiert und im Anschluss ein JavaProgramm mit
der Option -classpath ausführt.
Hier der Code:
--------------------------------------------------------------
#!/bin/sh
jarPath=$INSTALL_PATH/jars/
OOo_Path=$OOo_home
OOo=$OOo_home/program/classes
APP=CustAppl
classPath=.:classes/
cd $jarPath
for file in *
do
if [ -f "$file" ]
then
classPath=$classPath:jars/$file
fi
done
cd $OOo
for oojars in *
do
if [ -f "$oojars" ]
then
classPath=$classPath:$OOo/$oojars
fi
done
cd $INSTALL_PATH
$JAVA_HOME/bin/java -classpath \"$classPath\" $APP &
echo "Launching Application ...
exit
--------------------------------------------------------------
Die Variablen $INSTALL_PATH und $OOo_home werden automatisch
bei der Installation durch einen IzPack-Installer ersetzt.
Führe ich das Script mit den korrekt ersetzten oben genannten
Variablen aus führt das ganze zu einer ClassNotFoundException.
Das Kuriose daran ist allerdings, wenn ich die ganze "AusführZeile"
mit java etc. in eine Datei umleite, also dann :
------------------------------------------------------------------
echo $JAVA_HOME/bin/java -classpath \"$classPath\" $APP > start
chmod 755 start
./start
------------------------------------------------------------------
und diese aus dem Script ausführe funktioniert das ganze wunderbar !?!
Die Datei start wird dann im Installationsverzeichnis erzeugt, also
bin ich auch im richtigen Verzeichnis.
Das Programm startet auch, wenn ich die Zeile einfach über echo auf
der Konsole ausgebe, die Zeile kopiere und dann auf der Kommandozeile
ausführe.
Ich kann mir das ganze wirklich nicht erklären, aber vielleicht weiß
jemand von Euch rat :)
Markus
Reply to: