ubuntuusers.de

hilfe bei shell script jar-datei

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

prince82

Anmeldungsdatum:
6. Juni 2010

Beiträge: Zähle...

hallo zusammen, ich brauche eure Hilfe beim schreiben einer shell-skript. dieser Script soll eine jar-Datei irgendwo kopieren und drauf verlinken, sodass man dieser jar-Datei von überall erreichen kann und ohne "java -jar" benutzen kann.

danke im voraus

Creshal

Avatar von Creshal

Anmeldungsdatum:
24. November 2007

Beiträge: 487

Wohnort: Aachen

…was? Kopieren ist kein Problem(cp /pfad/zur/jar /ziel/ordner), aber was genau willst du dann machen?

prince82

(Themenstarter)

Anmeldungsdatum:
6. Juni 2010

Beiträge: 3

wenn man eine jar-Datei ausführen will, muss man java -jar name.jar tippen. ich will einen script schreiben, der diese jar-datei irgendwohin kopiert, wo man diese datei von überall benutzen kann also drauf verlinken oder sowas in der art

nahdem ausführen dieses script, braucht man nur name.jar in der konsole tippen und dann kann man diese jar-daeti benutzen

Creshal

Avatar von Creshal

Anmeldungsdatum:
24. November 2007

Beiträge: 487

Wohnort: Aachen

#!/bin/sh
java -jar /Pfad/zur/jar

Ausführbar in /usr/local/bin/ oder einem anderen Pfad in $PATH speichern. Dann kann das Programm über den Namen des Scripts gestartet werden (die Jar würde ich nach /opt/ oder /usr/local/lib/ packen).

prince82

(Themenstarter)

Anmeldungsdatum:
6. Juni 2010

Beiträge: 3

Creshal schrieb:

#!/bin/sh
java -jar /Pfad/zur/jar

Ausführbar in /usr/local/bin/ oder einem anderen Pfad in $PATH speichern. Dann kann das Programm über den Namen des Scripts gestartet werden (die Jar würde ich nach /opt/ oder /usr/local/lib/ packen).

Danke Creshal für dein Antwort kann ich das irgendwie automatisch machen,sodass man nur den shell script ausführen muss.

Creshal

Avatar von Creshal

Anmeldungsdatum:
24. November 2007

Beiträge: 487

Wohnort: Aachen

Wie du Dateien kopierst, hab ich oben schon geschrieben. Ein bisschen Nachdenken darfst du auch selber…

riffraff

Avatar von riffraff

Anmeldungsdatum:
1. Oktober 2006

Beiträge: 486

Wohnort: Im kühlen Norden

Moin, ich hätte das was; schnell zusammengestoppelt - weil ich die Idee nicht schlecht finde und mich über meine rumfliegenden jar-files auch immer ärgere ☺

Mein kleines Quick-and-Dirty Script

prüft ob ein jardepot existiert; hier in /usr/share/jardepot

prüft dann, ob das verzeichnis schreibbar ist

prüft dann ob die aufgerufene jardatei schon darin enthalten ist, wenn nicht kopiert das script diese hinein und ruft dann java -jar /usr/share/jardepot/<jarname>.jar auf

 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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#!/bin/sh
#
# Ruft ein .jar-file im $JARDEPOT auf
# wenn noch nicht vorhanden kopiert es diesen jar-file dorthin
#
# Aufruf "jarex <jarfile.jar>"
# Diese Datei als jarex nach /usr/bin kopieren
#
# erstmal ein paar variablen setzen
export PATH=/usr/bin:/usr/local/bin:$PATH
export JARDEPOT=/usr/share/jardepot
export JAVA=/usr/bin/java
#
#
# pruefe ob das jardepot erreichbar ist und wir sachen hineinkopieren koennen
if [ ! -d $JARDEPOT ]
then
echo "ERROR: Kein $JARDEPOT!"
echo "Erst anlegen und rechte setzen, dass wir hineinkopieren koennen!"
echo "Taste fuer Ende"
read nothing
exit 0
else
touch ${JARDEPOT}/TESTFILE >/dev/null 2>&1 && rm -f ${JARDEPOT}/TESTFILE >/dev/null 2>&1
if [ $? -ne 0 ]
then
echo "ERROR: Kann in $JARDEPOT nicht hineinschreiben, bitte rechte setzen!"
echo "Taste fuer Ende"
read nothing
exit 0
fi
fi
#
# wenn kein parameter angegeben zeige die hilfe und exit
if [[ "$1" = "" ]]
then
echo "Aufruf: jarex <jarfile.jar>"
echo "ruft die Datei jarfile.jar aus dem jardepot $JARDEPOT auf."
echo "Falls sie dort noch nicht existiert wird sie erst dorthin kopiert und dann"
echo "von dort gestartet."
echo "Taste fuer Ende"
read nothing
exit 0
fi
# OK, wir haben einen Parameter, nehmen wir an es ist ein jarfile :-)
#die zu kopierende/auszufuehrende datei ist parameter 1
export JARFILE=$1
#
# wenn $JARFILE schon im jardepot rufen wir es von dort auf
#
if [ -f ${JARDEPOT}/${JARFILE} ]
then
echo "OK: $JARFILE existiert in $JARDEPOT"
echo "rufe auf: $JAVA -jar ${JARDEPOT}/${JARFILE}" 
$JAVA -jar ${JARDEPOT}/${JARFILE} 
else
echo "HINWEIS: Kopiere $JARFILE nach $JARDEPOT"
cp $JARFILE $JARDEPOT
if [ -f ${JARDEPOT}/${JARFILE} ]
then
echo "OK: $JARFILE exisitiert in $JARDEPOT"
echo "rufe auf: $JAVA -jar  ${JARDEPOT}/${JARFILE}" 
$JAVA -jar ${JARDEPOT}/${JARFILE} 
else
echo "ERROR: Sorry so geht das nicht"
fi
fi

Ohne Gewähr, aber für mich funktioniert es so. Ich kann nicht ausschliessen, dass das Script noch Fehler logischer Art enthält.

Und ich weiss, dass man das wesentlich eleganter machen kann. Aber, wer micht kennt weiss, dass meine Scripte immer Quick-and-Dirty sind, weil ich weniger wert auf Schönheit lege, sondern mehr auf Transparenz, Einfachheit, Funktionalität und dass das Ganze leicht zu verstehen und zu erweitern ist!

Aufzurufen als

jarex <filenname>.jar

wobei das "jarex" bei mir als executable in /usr/bin liegt. So kann ich das von überall erreichen.

Für mich selbst werde ich noch die Erweiterung .jar obsolet machen, so dass man nur noch

jarex datei

aufrufen muss.

Ich hoffe, es gibt Dir ein paar Anregungen. ☺

riffraff

Avatar von riffraff

Anmeldungsdatum:
1. Oktober 2006

Beiträge: 486

Wohnort: Im kühlen Norden

Und? Hats geholfen?

Antworten |