ubuntuusers.de

Java-Starter funktioniert nicht

Status: Gelöst | Ubuntu-Version: Ubuntu 11.10 (Oneiric Ocelot)
Antworten |

Leifa

Anmeldungsdatum:
29. November 2009

Beiträge: Zähle...

Moin!

Ich möchte mir einen Starter für ein Java-Programm anlegen, der links in der Leiste dauerhaft bleibt. Habe das Programm gestartet und dann links die Option "Im Starter behalten" gewählt. Der Starter bleibt auch da, aber das Programm startet nicht, wenn man draufklickt. Wenn ich es über die Konsole oder die .jar mit Doppelklick starte, funktioniert es.

Woran könnte das liegen?

Gruß Leif

glasenisback

Avatar von glasenisback

Anmeldungsdatum:
20. November 2011

Beiträge: 1603

Wohnort: Fernwald (Gießen)

Wie hast du den Starter angelegt?

Leifa

(Themenstarter)

Anmeldungsdatum:
29. November 2009

Beiträge: Zähle...

Habe ich das nicht schon geschrieben?

Leifa schrieb:

Habe das Programm gestartet und dann links die Option "Im Starter behalten" gewählt.

Oder wie ist die Frage gemeint?

glasenisback

Avatar von glasenisback

Anmeldungsdatum:
20. November 2011

Beiträge: 1603

Wohnort: Fernwald (Gießen)

Wenn ich es richtig verstanden habe, hast du die Jar-Datei direkt gestartet. Das kann leider nicht funktionieren. Du musst zuerst eine Desktop-Datei von Hand anlegen. Hier mal eine Beispieldatei namens "mediathekview.desktop" für das Programm "MediathekView":

[Desktop Entry]
Type=Application
Version=1.0
Name=MediathekView
Comment=
Icon=/opt/MediathekView/MediathekView.png
Exec=/opt/MediathekView/Starten_Linux.sh
Terminal=false
StartupWMClass=mediathek-Main
Categories=GTK;GNOME;AudioVideo;Player;Video;

Diese Datei muss dann nur noch nach ~/.local/share/applications kopiert werden.

Einen wichtigen Hinweis gibt es noch:

Ohne den passenden Parameter für den Eintrag "StartupWMClass" benutzen unter Linux die Fenstermanager immer nur das generische Java-Icon (Das kleine dreieckige Männchen). Man muss dem Starter mit Hilfe des Parameters mitteilen wie das Fenster des Java-Programms heißt. Dadurch wird dann auch das richtige Icon benutzt. Herausfinden lässt sich das folgendermaßen:

Du musst das Java-Programm einmal von Hand starten. Danach rufst du in einer Konsole den folgenden Befehl auf und klickst dann auf das Programmfenster (Mauszeiger verwandelt sich nach dem Start des Programms in ein Kreuz):

xprop | grep "WM_CLASS"

Im Fall von MediaThekView bekommst du dann z.B. folgende Ausgabe:

WM_CLASS(STRING) = "sun-awt-X11-XFramePeer", "mediathek-Main"

Den zweiten Parameter trägst du dann hinter dem Eintrag "StartupWMClass" ein und speicherst die Datei dann ab. Danach sollte sich das Java-Programm mit dem richtigen Icon in der Starterleiste eintragen und auch das festpinnen sollte funktionieren.

Bei normalen Programmen ist dieser Weg normalerweise nicht mehr notwendig, bei Java-Programmen und allen anderen Programmen, welche eine Laufzeitumgebung benutzen aber schon.

Leifa

(Themenstarter)

Anmeldungsdatum:
29. November 2009

Beiträge: 25

Erstmal vielen Dank, es hat nach langem Hin und Her endlich geklappt!

Aber warum lässt sich eine solch banale Funktion nur derartig kompliziert umsetzen? Benutzerfreundlichkeit ist definitiv etwas anderes!

glasenisback

Avatar von glasenisback

Anmeldungsdatum:
20. November 2011

Beiträge: 1603

Wohnort: Fernwald (Gießen)

Aber warum lässt sich eine solch banale Funktion nur derartig kompliziert umsetzen? Benutzerfreundlichkeit ist definitiv etwas anderes!

Das hängt mit Java zusammen. Der Fenstermanager erkennt leider nur den Fensternamen von Java (Den ersten der Teil der Ausgabe des xprop-Befehls). Dadurch versucht Unity bei einem Pinnen des Starters nicht das eigentliche Programm, sondern Java als Laufzeitumgebung zu starten. Java startet dann auch, nur bekommst du davon nichts mit, weil Java seine Meldungen auf der Konsole ausgibt.

Wenn du dagegen ein normales Programm z.B. über den Dateimanager oder über die Konsole startest, erkennt der Fenstermanager dessen WM_CLASS korrekt (Weil ja keine Laufzeitumgebung benötigt wird) und das Verhalten des Starters ist dann auch wie man es erwartet. Bei solchen Programmen muss man in der Regel auch keine Desktop-Datei anlegen, wenn man sie nur im Starter pinnen will. Wenn man sie dagegen im Menü einsortieren will, ist eine Desktop-Datei zwingend notwendig.

Unter Windows ist die Situation übrigens auch nicht viel anders, nur gibt es dort in der Regel einen Installer der dafür sorgt, dass im Startmenü eine passende Verknüpfung für das jeweilige Programm angelegt wird. Gibt es diesen Installer nicht, muss man entweder eine Batch-Datei zum Starten des Java-Programms benutzen und, um ein wenig Komfort zu erhalten, eine Verknüpfung auf dem Desktop anlegen. Die desktop-Dateien sind nichts anderes als das Linux-Äquivalent zu den lnk-Verknüpfungsdateien unter Windows.

Es gibt übrigens ein grafisches Tool namens "alacarte" zum Anlegen neuer "Verknüpfungen". Dieses funktioniert einwandfrei, nur muss man eben danach immer noch die WM_CLASS in die jeweilige Desktop-Datei von Hand hinzufügen. Manchmal ist es schneller und einfacher eine leere Vorlage einer Desktop-Datei schnell von Hand mit dem passenden Inhalt zu füllen, als das grafische Tool zu bemühen.

sasilor17

Anmeldungsdatum:
23. Februar 2012

Beiträge: 7

Bitte löschen, habe eine neues Thema begonnen, da das Problem an einer andern Stelle liegt.

Das Programm läßt sich nicht im Terminal starten.

Hallo, ich bin relativ neu in der Linux Gemeinde und bin dieser Anleitung gefolgt um ein Programmsymbol in den Strarter von Unity 11.10 zu bekommen. Es hat leider nicht funktioniert.

Programmpfad: Persönlicher Ordner/Songbird/Songbird.bin Icon Pfad: Persönlicher Ordner/Songbird/Songbird512.png Pfad zur Desktop Datei: Persönlicher Orner/.local/share/applications/Songbird.desktop

RitterRunkel

Avatar von RitterRunkel

Anmeldungsdatum:
17. Januar 2011

Beiträge: 26

Wohnort: Potsdam

Darf ich mich hier kurz mit anhängen?: Ich versuche seit ner Stunde genau diese Mediathek in mein Dash zu kriegen. Eine mediathek.desktop wurde angelegt, das "StartupWMClass=mediathek-Main" hab ich eben noch ergänzt. Aber auch das ändert nichts an dem Problem:

Die .desktop läßt sich als root starten, aber nicht aus dem Dash als normaler Nutzer. Als root habe ich der .desktop aber schon die erweiterten Rechte zugewiesen und sie auch als ausführbares Programm gekennzeichnet. Beim Klick auf die .desktop-Verknüpfung im Ordner mit root-Rechten startet die Mediathek. Beim Klick auf die Verknüpfungskopie im Dash blinkt es jedoch nur und dann kommt nichts mehr ...

Jemand ne Idee? Vielen Dank im Voraus!

Antworten |