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:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
#!/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 :
|
Quellcode
|
1
2
3
|
echo $JAVA_HOME/bin/java -classpath "$classPath" $APP > start
chmod 755 start
./start
|
und dann 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
empty