Điểm:0

Cách định cấu hình tệp .desktop để chạy tệp .jar chính xác như thể chạy từ thiết bị đầu cuối

lá cờ cn

Tôi có một chương trình java hoạt động bình thường khi tôi chạy java -jar "lizzie.jar" từ thiết bị đầu cuối, nhưng khi tôi nhấp đúp vào nó trong Nautilus, nó sẽ chạy (tức là giao diện người dùng hiển thị) nhưng trả về lỗi "Không có tệp hoặc thư mục như vậy" đối với một trong các tệp (./leelaz) mà nó phụ thuộc vào để hoạt động bình thường.

Tôi đã tạo một tệp .desktop trong /home/username/.local/share/applications với các nội dung sau:

#!/usr/bin/env xdg-open
[Mục nhập máy tính để bàn]
Tên=Lizzie
Loại=Ứng dụng
Exec=java -jar "/home/username/opt/Lizzie/lizzie.jar"
Biểu tượng=/home/username/opt/Lizzie/lizzie_custom_logo.png
Bình luận=Lizzie
Thiết bị đầu cuối = sai

Chạy này dẫn đến lỗi tương tự như nhấp đúp.

tôi đã tìm và đọc cái này đăng và tôi đã thử sử dụng cả hai Thiết bị đầu cuối = đúngThiết bị đầu cuối = sai. Tệp lizzie.jar được đặt để cho phép thực thi dưới dạng chương trình và cả khi chạy từ Nautilus và thiết bị đầu cuối mà tôi chưa root. Tất nhiên, đây có thể là một vấn đề đối với Lizzie chứ không phải Ubuntu, nhưng tôi nghĩ rằng tôi sẽ có thể tạo ra hành vi tương tự như khi chạy từ thiết bị đầu cuối.

Quận: Ubuntu 18.04.6 LTS; hạt nhân: 5.4.0-99-chung

phiên bản java trả lại:

phiên bản openjdk "11.0.13" 2021-10-19
Môi trường thời gian chạy OpenJDK (bản dựng 11.0.13+8-Ubuntu-0ubuntu1.18.04)
OpenJDK 64-Bit Server VM (bản dựng 11.0.13+8-Ubuntu-0ubuntu1.18.04, chế độ hỗn hợp, chia sẻ)

Câu hỏi: Lý do có thể khiến hành vi nhấp đúp và chạy .desktop khác với thiết bị đầu cuối là gì và làm cách nào tôi có thể định cấu hình tệp .desktop cung cấp chính xác hành vi giống như khi tôi chạy java -jar lizzie.jar từ thiết bị đầu cuối?

N.B. Chương trình chạy trong cả hai trường hợp, nhưng nó không thể truy cập phần phụ thuộc ./leelaz trong trường hợp nhấp đúp hoặc sử dụng .desktop. Lizzie sau đó báo cáo: Không thể chạy chương trình "./leelaz": error=2, Không có tệp hoặc thư mục như vậy. Nhưng, tập tin ./leelaz ở đó và một lần nữa, mọi thứ đều hoạt động khi chạy từ thiết bị đầu cuối.

(Trong trường hợp quan tâm, ứng dụng là Lizzie, một giao diện cho Go AI Leela Zero.)

Martin Thornton avatar
lá cờ cn
Điều này có trả lời câu hỏi của bạn không? [Làm cách nào tôi có thể bắt đầu tệp jar thực thi từ tệp máy tính để bàn trong Lubuntu?](https://askubuntu.com/questions/684581/how-can-i-start-an-executable-jar-file-from-a- desktop-file-in-lubfox)
lá cờ hr
Có thể liên quan: [Tại sao dấu ngã không được công nhận là thư mục chính trong trường hợp này?](https://askubuntu.com/questions/1192981/why-isnt-tilde-recognised-as-home-folder-in-this-case )
Christopher.L avatar
lá cờ cn
@MartinThornton Tôi e là không, và tôi đã chỉnh sửa câu hỏi; Tôi chỉ viết '~' trong đường dẫn để tránh viết tên người dùng của mình, nhưng tất nhiên tôi có thể viết bất cứ thứ gì, tôi chỉ nghĩ chúng tương đương nhau. Đường dẫn thực sự hoàn chỉnh trong tệp .desktop.
Christopher.L avatar
lá cờ cn
Ngoài ra, như đã chỉ ra, ứng dụng sẽ khởi động, tức là gui của ứng dụng hiển thị, nhưng tôi gặp lỗi. Đây là lý do tại sao tôi viết rằng nó có thể là một câu hỏi dành cho các nhà phát triển Lizzie, nhưng tôi nghĩ thật lạ là nó hoạt động từ thiết bị đầu cuối, vì vậy tôi cảm thấy mình có thể sửa nó.
Điểm:1
lá cờ cn

lý do có thể xảy ra hành vi từ nhấp đúp và chạy .desktop khác với terminal

Khi chạy thành công java -jar "lizzie.jar", thư mục làm việc hiện tại của bạn giống với thư mục chứa tệp lizzie.jar trú ngụ. Nếu không thì, lizzie.jar sẽ không được tìm thấy.

lizzie.jar dường như mong muốn tìm thấy các tệp nó cần trong thư mục riêng của nó. Do đó, bạn cần đảm bảo đặt thư mục hiện tại thành thư mục chứa "lizzie.jar".

làm cách nào tôi có thể định cấu hình tệp .desktop cung cấp chính xác như vậy hành vi như thể tôi đã chạy java -jar lizzie.jar từ thiết bị đầu cuối?

Thêm mục máy tính để bàn sau vào .desktop trình khởi chạy:

Đường dẫn=/home/username/opt/Lizzie/
Christopher.L avatar
lá cờ cn
Điều này giải quyết vấn đề của tôi! Tôi hơi tò mò về lý do tại sao bấm đúp vào tệp .jar lại có hành vi tương tự; thư mục làm việc sẽ không được đặt thành thư mục của tệp mà tôi đang nhấp đúp phải không?
vanadium avatar
lá cờ cn
Khởi chạy một tệp bằng cách nhấp đúp sẽ khởi chạy nó trong thư mục chứa nó.
Christopher.L avatar
lá cờ cn
Chính xác, và đây là `/home/username/opt/Lizzie/` , tức là giống với đường dẫn tôi đã đặt trong .desktop giúp trình khởi chạy máy tính để bàn hoạt động.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.