Giả sử tôi có một số thư viện lib.jar
mà tôi không có mã nguồn (hoặc nó được viết bằng một số ngôn ngữ không phải là Java chưa biết về các mô-đun). lib.jar
không có module-info.class
và tôi không muốn sử dụng nó làm mô-đun tự động, vì vậy tôi muốn tiêm module-info.class
vào đó.Làm thế nào để tiêm khai báo mô-đun vào JAR?
đầu tiên tôi tạo ra module-info.java
với lệnh sau đây:
jdeps --generate-module-info . lib.jar
Giả sử này đã tạo ra một cái gì đó như thế:
module lib {
exports package1;
exports package2;
}
Sau đó, tôi cố gắng biên dịch nó nhưng javac
thất bại vì các gói package1
và package2
làm không tồn tại:
> javac module-info.java
module-info.java:4: error: package is empty or does not exist: package1
Tất nhiên, tôi có thể tạo các thư mục package1
và package2
với các lớp giả trong đó, nhưng có cách tiếp cận nào tốt hơn không?
khi tôi sử dụng lệnh này, tôi vẫn nhận được lỗi: > javac module-info.java module-info.java:4: lỗi: gói trống hoặc không tồn tại : package1 Bất kỳ sự biếng nhác nào tại sao nó có thể không hoạt động đối với tôi? –
@TiagoSantos Gói có tồn tại trong JAR không? – ZhekaKozlov
vâng, mọi thứ có vẻ tốt, tôi quản lý để nó hoạt động bằng cách sử dụng giải pháp ở trên từ nullpointer, tôi đồng ý rằng giải pháp của bạn thanh lịch hơn, vấn đề duy nhất là không hoạt động với .jars của tôi: –