Java Eclipse: Sự khác biệt giữa xuất dưới dạng JAR và xuất dưới dạng JAR có thể chạy được


87

Sự khác biệt trong eclipse giữa xuất dưới dạng tệp JAR và xuất dưới dạng tệp JAR Runnable là gì? Không phải cả hai đều chạy được sao? Ưu / nhược điểm của từng loại là gì?

Câu trả lời:


98

Jar runnable chứa một tệp MANIFEST.MF, định nghĩa lớp Chính sẽ được thực thi khi jar được chạy.

Các lọ không chạy được chỉ là thư viện của các lớp, có thể được thêm vào classpath để mã được sử dụng lại (nó cũng chứa tệp kê khai, nhưng không có lớp chính ở đó)


Khi chúng ta xuất tệp dưới dạng jar thay vì jar chạy được, chúng ta phải chỉ định lớp chính và đường dẫn thư viện trong tệp kê khai.mf.
ÔNG VÀ

20

Một jar chạy được là một tệp jar có tệp Manifest nhúng bao gồm khai báo "Main-Class:". "Main-Class" phải được định nghĩa để thời gian chạy java biết lớp nào cần gọi khi jar được "chạy". Nếu một jar không bao gồm một tệp kê khai với "Main-Class:" thì nó không được coi là một "jar chạy được" - nó chỉ là một thư viện mã Java.

Tôi đoán đây là sự khác biệt trong cách Eclipse xuất bình, nhưng không chắc chắn 100%.

Xem liên kết này để biết thêm thông tin: http://www.skylit.com/javamethods/faqs/createjar.html


17

Với tệp JAR tiêu chuẩn, bạn phải chỉ định lớp với phương thức chính trên dòng lệnh khi chạy jar. Với JAR có thể chạy được, có một tệp kê khai sẽ chứa thông tin đó để bạn có thể nhập java -jar myRunnable.jarhoặc chỉ cần nhấp đúp vào nó.


0

Trong trường hợp của tôi, tôi đã từng xuất dưới dạng jar khi tôi có tất cả lớp chính và tất cả thư mục đường dẫn thư viện được chỉ định trong tệp kê khai.mf. Nếu nhiều ứng dụng đang sử dụng cùng một thư viện thì không cần thiết phải xuất thư viện chia sẻ cho mỗi jar. Nó làm cho bình chạy nhanh hơn. Tuy nhiên, nhiều khi do vấn đề cấu hình trong đường dẫn lớp máy chủ khác nhau không thể truy cập thư viện và trong trường hợp đó, việc xuất jar chạy được có thể làm cho tệp chạy chậm và lớn.

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.