Làm thế nào tôi có thể thực hiện một tập tin .jar?


11

Tôi đang cố chạy một ứng dụng jar trong Ubuntu, vì vậy tôi đã cài đặt OpenJDK Java 7 Runtime, nhưng khi tôi mở ứng dụng này, tôi nhận được thông báo này:

Tệp '/home/aimad/Programms/jMerise/JMerise.jar' không được đánh dấu là có thể thực thi được. Nếu điều này được tải xuống hoặc sao chép từ một nguồn không đáng tin cậy, có thể nguy hiểm khi chạy. Để biết thêm chi tiết, đọc về bit thực thi.

Câu trả lời:


17

Bạn luôn có thể chạy một tệp jar bằng cách làm java -jar JMerise.jar.

Tuy nhiên, để làm cho tệp jar tự thực thi, bạn cần đặt bit thực thi, như thông báo gợi ý. chmod +x /home/aimad/Programms/jMerise/JMerise.jarsẽ thực hiện điều này.

Sau đó, bạn có thể làm ./JMerise.jarđể chạy nó.

man chmod sẽ cung cấp cho bạn thông tin về cách thức hoạt động của chmod.

Xem thêm: https://wiki.ubfox.com/Security/ExecutableBit


7

Nhấp chuột phải vào tệp, nhấp vào thuộc tính, sau đó chuyển đến tab Quyền và chọn hộp có nội dung "Cho phép thực hiện tệp này dưới dạng chương trình".

nhập mô tả hình ảnh ở đây


Còn nếu tôi không thể đánh dấu vào ô bên trên, để "cho phép thực thi tệp dưới dạng chương trình" thì sao? Tôi kiểm tra nó, nhưng một lát sau nó tự động bị bỏ chọn!
dùng961627

@ user961627 Bạn có thể có tệp .jar được lưu trữ trên một phân vùng không hỗ trợ bit thực thi. Xem Không thể tạo tệp thực thi để biết thêm chi tiết.
wjandrea

4

Trước tiên, bạn cần đảm bảo rằng bạn có môi trường thời gian chạy Java phù hợp trên hệ thống của mình. Ubuntu có openjdk trong repo chính thức tương thích 99,99% với Oracle Java, để cài đặt loại này:

sudo apt-get install openjdk-7-jre

Tiếp theo tạo một tệp được gọi java-jar-launcher.desktoptrong ~/.local/share/applicationsvà đặt các nội dung sau vào đó:

[Desktop Entry]
Type=Application
Name=Java Application Launcher
Icon=java
Exec=/usr/bin/java -jar %U
Categories=Application;Java
Terminal=False

Tiếp theo thêm dòng sau vào ~/.local/share/applications/mimeapps.list:

application/x-java-archive=java-jar-launcher.desktop;

Bây giờ bạn sẽ có thể chỉ cần nhấp đúp vào tệp jar để khởi chạy chúng, nếu không có gì xảy ra thì nhấp chuột phải vào tệp jar, chọn thuộc tính rồi chuyển đến tab "Mở bằng" và ở đó bạn sẽ thấy "Trình khởi chạy ứng dụng Java", chọn .

Phương pháp này có thể dùng được (IMHO) bởi vì cách này bạn không cấp quyền thực thi cho các tệp jar có thể gây nguy hiểm. Phương pháp này sẽ chỉ hoạt động trong môi trường đồ họa và cần người dùng nhấp đúp vào tệp theo cách thủ công.


2

Vì bạn chạy ứng dụng jar của mình với java -jar application.jarđiều đó có nghĩa là java nằm trên đường dẫn của bạn. Bạn cần hai điều đơn giản: 1) thêm một trình thông dịch (có vẻ như là #!java -jar) trong dòng đầu tiên của tệp jar của bạn giống như bạn làm điều đó với các tập lệnh shell của bạn: echo '#!java -jar' > app.jar cat application.jar >> app.jar mv app.jar application.jar

Nếu bạn gửi nội dung của tệp jar của mình, bạn sẽ thấy nó bắt đầu bằng ví dụ: #!java -jar PK ^lN BOOT-INF/PK ..... ..... 2) thêm thuộc tính thực thi vào chmod +x application.jar Bây giờ bạn có thể "tự chạy" thông qua ./application.jar.


0

Nếu chạy tệp .jar từ dòng lệnh hoạt động ( java -jar myFile.jar), nhưng bấm đúp vào tệp đó trong GUI thì không, và nếu có sudo chmod +x myFile.jarvẻ thành công nhưng bạn vẫn không thể mở bằng cách bấm đúp và nếu nhấp chuột phải vào .jar tệp> Thuộc tính> Quyền> "Cho phép thực thi tệp dưới dạng chương trình" không hoạt động (nghĩa là hộp kiểm sẽ chuyển trở lại ngay sau khi bạn nhấp vào tệp), sau đó có thể tệp .jar nằm trên hệ thống tệp NTFS, không cho phép thực thi quyền trên một cơ sở cho mỗi tập tin. (Ví dụ, bạn có thể gặp sự cố này nếu khởi động kép và có phân vùng NTFS được chia sẻ giữa Ubuntu và Windows).

Tạo một trình khởi chạy (như @ tusharkant15 mô tả) sẽ hoạt động vì đằng sau hậu trường bạn đang thực thi /usr/bin/java, chứ không phải chính tệp .jar. Di chuyển tệp .jar sang một số hệ thống tệp khác không phải là NTFS cũng sẽ hoạt động.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.