Đây là trường hợp của tôi. Tôi có một .war mà tôi thực thi với java và nó chỉ hoạt động bên trong thư mục của nó:
cd /opt/myappdir/
java -jar myapp.war
Lưu ý: Nó không hoạt động như vậy:
java -jar /opt/myappdir/myapp.war
Tôi đã tạo một tập lệnh bash (sudo /opt/myappdir/run.sh
) để khởi chạy lệnh này
#!/usr/bin/env bash
cd /opt/myappdir/
java -jar myapp.war
Cho đến nay mọi thứ hoạt động. Bây giờ vấn đề:
Tôi muốn khởi chạy nó từ một phím tắt trên màn hình của mình. Đây là lối tắt trên màn hình của tôi để bắt đầu chiến tranh myapp
[Mục nhập máy tính để bàn]
Mã hóa=UTF-8
Phiên bản=1.0
Tên=Ứng dụng của tôi
Bình luận=Chạy ứng dụng của tôi
Loại=Ứng dụng
Exec=/opt/myappdir/run.sh
Biểu tượng=/opt/myappdir/myapp.ico
Đường dẫn=/opt/myappdir/
Thiết bị đầu cuối = sai
Nhưng kể từ khi myapp.war
cần được chạy với sudo và bên trong myappdir
tôi sửa đổi của tôi chạy.sh
kịch bản như sau
#!/usr/bin/env bash
cd /opt/myappdir/
dir=$(tên thư mục $(readlink -m $BASH_SOURCE))
pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY QT_X11_NO_MITSHM=1 java -jar myapp.war
Tại sao dòng với dir=$(tên thư mục $(readlink -m $BASH_SOURCE))
?
vì tôi cần đảm bảo myapp.war
đang chạy bên trong myappdir
Tại sao dòng với pkexec
?
bởi vì khi nhấp đúp vào phím tắt trên màn hình java
cần phải được chạy với sudo
ngoài:
Lỗi: Không thể truy cập jarfile myapp.war
người nào Đây cung cấp một giải pháp cho một câu hỏi tương tự, nhưng nó không hiệu quả với tôi. (Sửa đổi đề xuất :)
#!/usr/bin/env xdg-open
[Mục nhập máy tính để bàn]
Phiên bản=1.0
Loại=Ứng dụng
Thiết bị đầu cuối = sai
Exec=java -jar 'myapp.war'
Đường dẫn=/opt/myappdir/
Tên = ứng dụng của tôi
Nhận xét = ứng dụng của tôi
Biểu tượng=/opt/myappdir/myapp.ico
làm thế nào tôi có thể sửa chữa của tôi chạy.sh
kịch bản để chạy myapp.war
với sudo
phía trong myappdir
và gọi nó từ lối tắt trên màn hình? Cảm ơn
Cập nhật
Theo những gì ai đó giải thích ĐÂY, pkexec
không chạy trong cùng một thư mục (tôi đoán đó là lý do tại sao nó không thể tìm thấy myapp.war
tập tin). Vì vậy, giải pháp có thể là chạy một lệnh buộc nó vào thư mục để chạy java, nhưng tôi đã thử và không thành công