Führen Sie eine Dose mit Doppelklick in Linux aus

2721
atoMerz

Was ich zu erreichen versuche, ist, ein Java-Programm auf einem beliebigen Linux-System (Ubuntu, Fedora usw.) auszuführen, indem Sie einfach auf eine Datei doppelklicken, wie ich es unter Windows tun würde.
Ich habe eine .sh-Datei erstellt (und Ausführungsberechtigungen erteilt) mit folgendem Inhalt:

#!/bin/sh java -Xmx512M\ -Djava.library.path="."\ -DclientAppDataPath="Application Data"\ -jar Client.jar\ Phoenix.client.ClientMain\ 1>output.txt 2>error.txt 

Wenn ich versuche, diese Datei mit dem Ubuntu-Terminal auszuführen, funktioniert das einwandfrei. Wenn ich jedoch versuche, auf die Datei zu doppelklicken und "Ausführen" oder "In Terminal ausführen" zu wählen, sehe ich nichts. Offenbar öffnet und schließt sich die Schale sofort. Wie vermeide ich das?


BEARBEITEN : Ich habe bemerkt, dass error.txt Folgendes enthält:

Blah / Blah / Blah / Client Launcher.sh: 2: Blah / Blah / Blah / Client Launcher.sh: Java: nicht gefunden

Ich habe eine jdk1.xxtar.gz-Datei extrahiert und Java-Startseite manuell mit der .bashrc-Datei zu PATH hinzugefügt. Könnte das die Ursache sein? Wie kann ich es reparieren?

0
Versuchen Sie, den vollständigen Pfad zu Java zu verwenden. pjc50 vor 10 Jahren 2
@ pjc50, verdammt! Es funktionierte. Das löst mein Problem im Allgemeinen nicht (ein Setup-Programm generiert diese Datei), aber zumindest bin ich mir sicher, was los ist. atoMerz vor 10 Jahren 0
Wenn Sie keine lokal installierte (dh nicht von der Paketverwaltung installierte) Version von Java verwenden, weiß Ihr Skript nicht, wo es sich befindet. `.bashrc` wird nur ausgewertet, wenn Sie sich bei einer interaktiven Sitzung anmelden. Tim vor 10 Jahren 0

1 Antwort auf die Frage

0
pjc50

Es gibt eine nette Lösung, die dazu führt, dass Java-JAR-Dateien als ausführbare Datei behandelt werden, ohne dass Shell-Skripts erforderlich sind. Es ist jedoch etwas umständlich einzurichten:

https://wiki.archlinux.org/index.php/Binfmt_misc_for_Java

Ich glaube, dass beliebte Distributionen Pakete haben, die es für Sie regeln werden, obwohl ich es in letzter Zeit nicht selbst verwendet habe.