optimist
Anmeldungsdatum: 26. März 2008
Beiträge: 309
|
Hallo Gemeinde, bisher konnte ich das Openbox Kontextmenü an meine Erfordernisse gut anpassen. Nun benutze ich seit einiger Zeit eine Java-Programm, dass ich bisher aus dem Terminal starte. Dabei muss ich zuerst in das Verzeichnis des Programms wechseln, um dann das Script zu starten - also:
cd ~/Pfad_Java_Programm
sh programmname.sh
Der Entwickler des Programms gibt vor, das Programm über das Script zu starten und nicht mit java -jar. Meine Frage daher, gibt es eine Möglichkeit das Script über das Openbox Kontextmenü zu starten? Hier mal mein nicht funktionierender Eintrag in der /usr/share/lubuntu/openbox/menu.xml:
<item label="RChess">
<action name="Execute">
<command>sh /home/xxx/bin/RChess/rchess.sh</command>
<startupnotify>
<enabled>yes</enabled>
</startupnotify>
</action>
</item>
Für Tipps und Hinweise besten Dank im Voraus!
|
horstpenner
Anmeldungsdatum: 7. Februar 2016
Beiträge: 364
|
Eigentlich trägt man normalerweise seine persönliche Konfiguration auch in ~/.config/openbox/menu.xml ein. Wenn die Datei noch nicht vorhanden ist, kann man sie aus /usr/share/... rauskopieren. Du müsstest es auch mit folgenden Befehlen in die .bashrc eintragen können, damit es mit dem Befehl rchess aufrufbar ist.
echo "alias rchess='/home/xxx/bin/RChess/rchess.sh'" >> ~/.bashrc
. ~/.bashrc Dann müsste eigentlich unter dem Eintrag command(Edit: Sicher, dass das so stimmt?? Bei mir heißt es nämlich <execute>...</execute>) auch rchess als Befehl ausreichen.
|
optimist
(Themenstarter)
Anmeldungsdatum: 26. März 2008
Beiträge: 309
|
Habe das jetzt mal so wie von dir vorgegeben gemacht:
~$ echo "alias rchess='/home/benutzername/bin/RChess/rchess.sh'" >> ~/.bashrc
~$ . ~/.bashrc
~$ rchess
%~dp0
Fehler: Hauptklasse gerddb.ui.GerdDbStarter konnte nicht gefunden oder geladen werden
~$
Muss ich das Script ausführbar machen? Edit: Das war jetzt erst mal nur der Versuch im Terminal. Starte ich das Programm wie bisher funktioniert es einwandfrei:
~/bin/RChess$ sh rchess.sh
%~dp0
##### Heap utilization at start #####
Used Memory: 0
Free Memory: 58
Total Memory: 59
Max Memory: 1778
##### Heap utilization before opening /home/xxx/Schach_DB/ReferenzDB/refere #####
Used Memory: 27
Free Memory: 87
Total Memory: 114
Max Memory: 1778
##### Heap utilization after opening /home/xxx/Schach_DB/ReferenzDB/refere #####
Used Memory: 27
Free Memory: 115
Total Memory: 142
Max Memory: 1778
Nov 24, 2016 2:35:27 PM gerddb.db.memdb.Database load
INFORMATION: Read players: 3252
Nov 24, 2016 2:35:27 PM gerddb.db.memdb.Database load
INFORMATION: Read tournaments: 3327
Nov 24, 2016 2:35:34 PM gerddb.db.memdb.Database load
INFORMATION: Read headers: 10234
Nov 24, 2016 2:35:40 PM gerddb.db.memdb.Database load
INFORMATION: Read moves: 16300
Nov 24, 2016 2:35:40 PM gerddb.db.memdb.Database load
INFORMATION: Read vars: 16322
Nov 24, 2016 2:35:40 PM gerddb.db.memdb.Database load
INFORMATION: Read changes: 16324
Nov 24, 2016 2:35:40 PM gerddb.db.memdb.Database load
INFORMATION: Levels for /home/xxx/Schach_DB/ReferenzDB/refere: 0=2069939 1:0 2:0 3:0 4:2
Nov 24, 2016 2:35:40 PM gerddb.db.memdb.Database load
INFORMATION: Memory: 994574336 - 558979520
##### Heap utilization before opening /home/xxx/Schach_DB/egoDB/egoDB #####
Used Memory: 410
Free Memory: 594
Total Memory: 1005
Max Memory: 1778
##### Heap utilization after opening /home/xxx/Schach_DB/egoDB/egoDB #####
Used Memory: 411
Free Memory: 612
Total Memory: 1023
Max Memory: 1778
Nov 24, 2016 2:35:44 PM gerddb.db.memdb.Database load
INFORMATION: Read players: 14
Nov 24, 2016 2:35:44 PM gerddb.db.memdb.Database load
INFORMATION: Read tournaments: 17
Nov 24, 2016 2:35:44 PM gerddb.db.memdb.Database load
INFORMATION: Read headers: 51
Nov 24, 2016 2:35:44 PM gerddb.db.memdb.Database load
INFORMATION: Read moves: 65
Nov 24, 2016 2:35:44 PM gerddb.db.memdb.Database load
INFORMATION: Read vars: 77
Nov 24, 2016 2:35:44 PM gerddb.db.memdb.Database load
INFORMATION: Read changes: 79
Nov 24, 2016 2:35:44 PM gerddb.db.memdb.Database load
INFORMATION: Levels for /home/xxx/Schach_DB/egoDB/egoDB: 0=433 1:89 2:24 3:0 4:0
Nov 24, 2016 2:35:44 PM gerddb.db.memdb.Database load
INFORMATION: Memory: 1073217536 - 640386056
~/bin/RChess$
|
optimist
(Themenstarter)
Anmeldungsdatum: 26. März 2008
Beiträge: 309
|
horstpenner schrieb:
Dann müsste eigentlich unter dem Eintrag command(Edit: Sicher, dass das so stimmt?? Bei mir heißt es nämlich <execute>...</execute>) auch rchess als Befehl ausreichen.
Ich denke schon, mit java -jar funktioniert der Start aus dem Kontextmenü.
<command>java -jar /home/benutzername/bin/RChess/rchess.jar</command>
|
horstpenner
Anmeldungsdatum: 7. Februar 2016
Beiträge: 364
|
optimist schrieb: Habe das jetzt mal so wie von dir vorgegeben gemacht:
~$ rchess
%~dp0
Fehler: Hauptklasse gerddb.ui.GerdDbStarter konnte nicht gefunden oder geladen werden
~$
Ich habe das Gefühl, dass das Skript nicht dafür ausgelegt ist, so zu funktionieren. Könntest Du vielleicht mal dessen Inhalt posten? Denn offensichtlich wird das Skript gestartet. Das, was aber nicht funktioniert, ist dann etwas innerhalb des Skripts.
|
optimist
(Themenstarter)
Anmeldungsdatum: 26. März 2008
Beiträge: 309
|
Hier das Script ~/bin/RChess/rchess.sh:
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD="/home/xxx/bin/jre1.8.0_111/bin/java"
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
JPDA_OPTS=""
# JPDA_OPTS=-Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4711,suspend=n
JAVA_OPTS=-Xmx2000m
GCHESS_LOGGING_OPTS=
# GCHESS_OPTS=-Djava.util.logging.config.file=GChess_logging.properties
echo %~dp0
${JAVACMD} ${JPDA_OPTS} ${JAVA_OPTS} ${GCHESS_OPTS} -cp rchess_lib/*:rchess.jar gerddb.ui.GerdDbStarter $*
Mir ist aufgefallen, dass es nicht mit der für ein Script typischen Zeile anfängt:
#!/bin/bash Edit: Die erforderliche Oracle Java Version ist nicht installiert, sondern entpackt.
|
horstpenner
Anmeldungsdatum: 7. Februar 2016
Beiträge: 364
|
Irgendwie komme ich hier nicht weiter. Das Skript startet sogar das Java- Programm, aber das Programm findet dann die interne Klasse gerddb.ui.GerdDbStarter nicht. Es findet sie aber beim manuellen Starten. Ich kann nur hoffen, dass Dir ab hier jemand anders weiterhelfen kann.
|
optimist
(Themenstarter)
Anmeldungsdatum: 26. März 2008
Beiträge: 309
|
Du siehst mich darüber sehr beeindruckt, dass Du für eine Lösung des Problems das Programm extra auf Deinem System eingerichtet hast. Vielleicht bis Du auch Schachspieler, dann möchte ich Dir das Programm sehr empfehlen. Es ist wirklich gut gemacht und bietet ein paar hervorragende Funktionen, welche ich bei anderen Programmen bisher vermisst habe. Ich bin zuversichtlich, dass es für das Problem früher oder später eine Lösung gibt. Bis dahin muss ich das Programm eben im Terminal starten. Für Deine freundliche Hilfe vielen Dank!
|
horstpenner
Anmeldungsdatum: 7. Februar 2016
Beiträge: 364
|
Ich hatte mir das Programm eigentlich nicht auf meinem System eingerichtet. Aber tatsächlich habe ich mal aktiv Schach gespielt und war jetzt ein wenig interessiert. Also habe ich es jetzt mal runtergeladen. Kurioserweise funktioniert bei mir genau das, was bei Dir nicht geht:
user@PC:~/Downloads/rchess/RChess$ ./rchess.sh
%~dp0
##### Heap utilization at start #####
Used Memory: 2
Free Memory: 478
Total Memory: 481
Max Memory: 1778
user@PC:~/Downloads/rchess/RChess$ alias rchess="~/Downloads/rchess/RChess/rchess.sh"
user@PC:~/Downloads/rchess/RChess$ rchess
%~dp0
##### Heap utilization at start #####
Used Memory: 2
Free Memory: 478
Total Memory: 481
Max Memory: 1778
user@PC:~/Downloads/rchess/RChess$ echo "alias rchess='/home/user/Downloads/rchess/RChess/rchess.sh'" >> ~/.bashrc
user@PC:~/Downloads/rchess/RChess$ unalias rchess
user@PC:~/Downloads/rchess/RChess$ rchess
bash: rchess: Kommando nicht gefunden.
user@PC:~/Downloads/rchess/RChess$ . ~/.bashrc
user@PC:~/Downloads/rchess/RChess$ rchess
%~dp0
##### Heap utilization at start #####
Used Memory: 2
Free Memory: 478
Total Memory: 481
Max Memory: 1778
user@PC:~/Downloads/rchess/RChess$ apt list --installed | grep openjdk
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
openjdk-8-jre/testing,now 8u111-b14-3 amd64 [Installiert,automatisch]
openjdk-8-jre-headless/testing,now 8u111-b14-3 amd64 [Installiert,automatisch]
user@PC:~/Downloads/rchess/RChess$
Benutze allerdings openjdk-8-jre. Edit: Habe jetzt den Fehler lokalisieren können. Das Skript greift wohl auf das aktuell aktive Verzeichnis zu, sodass man erst ins Programmverzeichnis muss. Bei mir liegt es in ~/Spiele/, also habe ich folgendes in der .bashrc eingetragen:
alias rchess='cd ~/Spiele/RChess && ./rchess.sh && cd -' Dadurch lässt sich das Programm jetzt auch zuverlässig über den Befehl rchess starten. Wenn Du Deine .bashrc entsprechend anpasst, sollte es also auch bei Dir funktionieren.
|
optimist
(Themenstarter)
Anmeldungsdatum: 26. März 2008
Beiträge: 309
|
horstpenner schrieb: alias rchess='cd ~/Spiele/RChess && ./rchess.sh && cd -' Dadurch lässt sich das Programm jetzt auch zuverlässig über den Befehl rchess starten. Wenn Du Deine .bashrc entsprechend anpasst, sollte es also auch bei Dir funktionieren.
Kann ich bestätigen - im Terminal lässt sich das Programm jetzt aus jedem Verzeichnis nur durch den Befehl rchess starten. In ~/.config/openbox/menu.xml habe ich den betreffenden Eintrag ebenfalls geändert - jedoch ohne Erfolg (siehe Anhang).
Zwischenzeitlich hatte ich die Datei aus /usr/share/lubuntu/openbox/ kopiert. Mit OpenJDK funktioniert RChess übrigens nicht zuverlässig. Es treten sporadische Fehler auf, beispielsweise wenn man eine Partie nachspielt.
Jedoch mit Oracle Java läuft das Programm stabil!
- Bilder
|
horstpenner
Anmeldungsdatum: 7. Februar 2016
Beiträge: 364
|
Also es macht den Eindruck, als würde Openbox - um es jetzt mal vereinfacht auszudrücken - beim Starten des eigenen Terminals Deine .bashrc nicht anschauen. Es gibt jetzt eigentlich nur zwei Lösungsmöglichkeiten:
Entweder man findet einen Weg, die drei Befehle in der menu.xml irgendwie direkt am Stück auszuführen, damit man nicht über die .bashrc muss, sodass für dieses Szenario wenigstens eine Lösung da wäre, oder - der deutlich attraktivere Ansatz: Man findet einen allgemeinen Weg, Openbox dazu zu bringen, die .bashrc des aktiven Users erst zu initialisieren.
|
optimist
(Themenstarter)
Anmeldungsdatum: 26. März 2008
Beiträge: 309
|
Habe das Script nach ~/bin kopiert - ist aber auch nicht zielführend:
~$ cp ~/bin/RChess/rchess.sh $HOME/bin
Nun gut, dann starte ich das Programm weiterhin im Terminal. Jedenfalls ist es schon mal etwas komfortabler zu handhaben als vorher.
|