# *.jar applikationen auf Linux installieren



## ThomasD (10. Dez 2007)

Hallo liebes Forum,

ich bin momentan (noch) ein reiner Java Anwender. Habe zwei sehr schöne Programme (freemind, argouml) die ich auf meinem Linux System installiern will. Hab sie ausgepackt und bin in das jeweilige Verzeichnis mit dem *.jar file gegangen und hab mit 'java -jar PROGRAMM.jar' gestartet und alles war gut. Alternativ kann ich auch immer 'java -jar /pfad/zum/jar/file/PROGRAMM.jar' eintippen und es funktioniert auch.

So weit so gut...

Jetzt würde ich gern die *.jar files so installieren oder verlinken, dass ich das jeweilige Programm starten kann OHNE vorher in das Verzeichnis zu wechseln wo das *.jar liegt und OHNE den ganzen Pfad eintippen zu müssen. Ich möchte also, dass java das *.jar file selber findet. Ich hab es mit der CLASSPATH Umgebungsvariable versucht. Das hat nicht funktioniert.

Um es vorwegzunehmen. Ich kann Aliase und Desktop Verknüpfungen erstellen... Ich kann auch shell Skripte erstellen.... Aber das scheint mir eben nicht die eleganteste Lösung zu sein. Ich will die *.jar Programme so installieren, dass sie systemweit verfügbar sind (in /usr/local) und das ich sie von der Kommandozeile aus bequem mitsamt zu bearbeitendem File aufrufen kann. Also so ähnlich wie z.B. Skripte bei denen das System ja auch automatisch den passenden Interpreter auswählt.

Aufgrund eines entsprechende Hinweises in der java-manpage hab ich auch versucht das jar-file executable zu machen. Das hat auch nicht funktioniert. Das wäre ziemlich genau das gewesen was mir vorschwebt.

Hat da jemand eine gute Idee? Oder ist meine Vorstellung von 'elegant' nicht so elegant? Gibt es vielleicht einen guten Grund warum java nicht so einfach selber nach *.jar files sucht?

Besten Dank im Vorraus!

PS. Ich hab ein SuSE 10.3 mit java 1.5.0.


----------



## kaesebrot (10. Dez 2007)

Hi, 

du könntest ein shell-script in /usr/bin legen, daß die gewünschte jar-datei für dich entsprechend aufruft.


viele Grüße, 
  Käse


----------



## DocRandom (10. Dez 2007)

Hi ThomasD!

Unter SuSE gehst Du folgendermaßen vor:
rechte Mousetaste am Desktop klicken
Neu erstellen -> Verknüpfung zu Programm auswhählen
Die Programm bezeichnung eingeben
Auf den Programmreiter klicken
Unter Befehl: gibst Du jetzt den Befehl java -cp /Pfad zu Deiner Anwendung 
Unter Arbeitsordner den Pfad wo das *.jar-File liegt
auf OK klicken
..fertig
Du kannst Dir dann noch ein Icon Deiner wahl aussuchen, damit am Desktop ned soviele Zahnräder stehen.

lg
DocRandom


----------



## ThomasD (10. Dez 2007)

@ Käsebrot

ja, das funktioniert. Ich hatte es erst mit einem im Paket freemind mitgelieferten shellskript versucht. Das hat auf meinem Desktop Rechner funktioniert, aber auf meinem Laptop nicht. Das scheint aber was sehr spezielles von FreeMind zu sein. Ich hab mir selber ein Skript erstellt das jetzt das Programm korrekt aufruft.

Aber die Lösung scheint mir nicht wirklich schön zu sein. Java ist schliesslich angetreten um Programme zu erstellen die auf jedem Rechner laufen. Da würde ich erwarten, dass sich die Entwickler auch was ausdenken das man Programme eben ohne zusätzliche Skripte und ohne ellenlange Kommandozeilen starten kann.

@ DocRandom

Das mit dem '-cp' scheint eine gute Idee zu sein. Genauso wie meine Idee mit der CLASSPATH Variable. Es funktioniert auch wenn ich als Befehl noch das *.jar mitsamt Pfad anhänge... Aber es ist eben gerade das, was ich nicht will. Ich will, das meine Shell und der Java Interpreter es allein finden. Ich will dem Java nur den Namen den Programms (von mir aus mit .jar Endung aber eben ohne den ganzen Pfad) sagen und mit einer Umgebungsvariable noch wo er suchen soll. Dann soll das funktionieren.

Vielleicht geht das ja nicht. Aber ich hab eben die Vermutung das es geht und es geht mir schlecht wenn ich einen Workaround bastele und im Hinterkopf immer denke: Vermutlich geht es noch eleganter....


----------



## Wildcard (11. Dez 2007)

Einem jar kann man keinen Classpath mitgeben, der Classpath bestimmt sich aus dem Manifest.
ArgoUML wird übrigens als Webstart deployed, das dürfte wohl die komfortablere Variante sein.


----------

