Tôi muốn tạo một tệp thực thi JAR chứa các thư viện JAR khác. Nhưng khi tôi thực hiện JAR, nó đưa ra một lỗi của vấn đề đường dẫn lớp.Tạo tệp JAR chứa các tệp thư viện khác
Làm cách nào để giải quyết vấn đề đường dẫn lớp?
Tôi muốn tạo một tệp thực thi JAR chứa các thư viện JAR khác. Nhưng khi tôi thực hiện JAR, nó đưa ra một lỗi của vấn đề đường dẫn lớp.Tạo tệp JAR chứa các tệp thư viện khác
Làm cách nào để giải quyết vấn đề đường dẫn lớp?
Tôi nghĩ bạn có thể thử nó như thế này;
Đây là một ví dụ đơn giản cho bạn câu hỏi. Đầu tiên, chúng tôi giả sử chúng tôi có một thư mục dự án như D:\javademo
. Trong thư mục làm việc này, chúng tôi tạo một lớp chính HelloWorld.java và thtat chứa các tệp JAR khác của chúng tôi, như commons-lang.jar
. Bây giờ, chúng ta phải lưu trữ các lớp chính của chúng ta HelloWorld và commons-lang.jar vào tệp test.jar.
Đầu tiên chúng ta phải chỉnh sửa file manifest của chúng tôi để chúng tôi có thể xác định chúng ta đẳng cấp đường dẫn và chính lớp như thế này:
Manifest-Version: 1.0
Created-By: tony example
Class-Path: test.jar commons-lang.jar
Main-Class: org.tony.java.HelloWorld
Chúng tôi đặt tên tập tin này test.mf
. Bây giờ chúng ta sử dụng lệnh jar
để tạo ra tập tin JAR của chúng tôi như thế này:
jar -cvfm test.jar test.mf -C ./ .
Sau đó, nó sẽ tạo ra các tập tin JAR test.jar
. Bạn có thể sử dụng lệnh này để chạy lớp chính này bằng cách sử dụng lệnh java:
java -jar test.jar
Đó là giải pháp của tôi. Tôi hy vọng nó cung cấp cho bạn một cái gì đó hữu ích ...
Cảm ơn bạn rất nhiều, tôi đã nhầm lẫn về cách thêm phụ thuộc thư viện vào tệp jar –
Bạn nên sử dụng thư viện của bên thứ ba cho nó. Ví dụ: OneJar. Bạn sẽ phải xây dựng tệp JAR cuối cùng bằng cách sử dụng công cụ OneJar (như nhiệm vụ Ant) thay vì các công cụ tiêu chuẩn của JRE.
Khi chạy tệp JAR như vậy, lớp dịch vụ của OneJar được khởi chạy thay cho lớp dịch vụ của bạn. Lớp này sau đó tải các tệp JAR được đóng gói bên trong, cũng như các lớp của bạn và chạy lớp chính của bạn.
Đã có câu hỏi và câu trả lời tương tự. Ví dụ: Câu hỏi về Stack Overflow Easiest way to merge a release into one JAR file.
Tôi đã thử mọi thứ nhưng không hoạt động. –
Khi nào bạn thử? –
Tôi đã thử nhiều lần trước khi đăng bài này nhưng vẫn không hoạt động. –
* "Tôi muốn tạo một Jar thực thi có chứa các thư viện jar khác" * Những gì bạn muốn ít quan trọng hơn những gì làm việc. Triển khai nhiều Jars với [JWS] (http://stackoverflow.com/tags/java-web-start/info) hoặc một kiểu trình cài đặt khác đã được xem là hoạt động tốt trong nhiều trường hợp. –
Câu hỏi trùng lặp về http://stackoverflow.com/questions/5424761/java-packaging-building-common-techniques-jar-file-specifically/5424847#5424847 –