Acesta este cazul meu. Am un .war pe care îl execut cu java și funcționează doar în folderul său:
cd /opt/myappdir/
java -jar myapp.war
Notă: nu funcționează așa:
java -jar /opt/myappdir/myapp.war
Am creat un script bash (sudo /opt/myappdir/run.sh
) pentru a lansa această comandă
#!/usr/bin/env bash
cd /opt/myappdir/
java -jar myapp.war
Până acum totul funcționează. Acum problema:
Vreau să-l lansez dintr-o comandă rapidă de pe desktop. Aceasta este comanda mea rapidă pe desktop pentru a începe războiul myapp
[Intrare pe desktop]
Codificare=UTF-8
Versiunea=1.0
Nume=Aplicația mea
Comentariu=Run MyApp
Tip=Aplicație
Exec=/opt/myappdir/run.sh
Pictogramă=/opt/myappdir/myapp.ico
Cale=/opt/myappdir/
Terminal=fals
Dar de atunci myapp.war
trebuie să fie rulat cu sudo și în interiorul myappdir
Mi-am modificat alerga.sh
script după cum urmează
#!/usr/bin/env bash
cd /opt/myappdir/
dir=$(dirname $(readlink -m $BASH_SOURCE))
pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY QT_X11_NO_MITSHM=1 java -jar myapp.war
De ce să se alinieze cu dir=$(dirname $(readlink -m $BASH_SOURCE))
?
pentru că trebuie să mă asigur myapp.war
aleargă înăuntru myappdir
De ce să se alinieze cu pkexec
?
deoarece la dublu clic pe scurtătura de pe desktop java
trebuie rulat cu sudo
afară:
Eroare: Imposibil de accesat jarfile myapp.war
cineva Aici oferă o soluție la o întrebare similară, dar nu a funcționat pentru mine. (Modificarea propunerii:)
#!/usr/bin/env xdg-open
[Intrare pe desktop]
Versiunea=1.0
Tip=Aplicație
Terminal=fals
Exec=java -jar 'myapp.war'
Cale=/opt/myappdir/
Nume=aplicația mea
Comentariu=aplicația mea
Pictogramă=/opt/myappdir/myapp.ico
cum imi pot repara alerga.sh
scriptul pentru a rula myapp.war
cu sudo
interior myappdir
, și îl suni de la comanda rapidă de pe desktop? Mulțumiri
Actualizați
După ce explică cineva AICI, pkexec
nu rulează în același director (presupun că acesta este motivul pentru care nu poate găsi myapp.war
fişier). Deci, soluția ar putea fi să rulezi o comandă care ar forța să intre în director pentru a rula java, dar am încercat și am eșuat