Tôi đã tạo mô-đun mới cho phần mềm được viết bằng java. Phần mềm này được chạy từ các tệp jar. Các lớp của tôi đang mở rộng các lớp trong phần mềm này. Tôi muốn viết một plugin bổ sung thêm các lớp mới vào tệp jar. Tôi biết cách trích xuất một tệp jar vào thư mục và thêm chúng vào tệp jar bằng cách sử dụng gói java.util.jar nhưng vì có rất nhiều tệp để trích xuất từ tệp, nên có thể thêm các lớp mới mà không cần giải nén tệp vào thư mục, bằng cách nào đó trực tiếp.Cách thêm các lớp Java mới vào các lớp hiện có trong tệp jar
Trả lời
jar uf jar-file input-file(s)
Sẽ cho phép thêm new files/update các tệp hiện có trong bình mà không giải nén.
Bạn có thể sử dụng lệnh sau
jar uf foo.jar foo.class
Điều này chỉ hoạt động 50% vì lệnh đó sẽ không đặt lớp trong gói tương ứng của nó cấu trúc cây. – m0skit0
@ m0skit0 Để đặt lớp học trong cấu trúc tres bạn cần phải vượt qua tên lớp với cấu trúc thư mục. jar uf foo.jar /com/test/foo.class –
Câu hỏi của bạn cho thấy rằng bạn muốn làm điều này lập trình, không bằng cách sử dụng dòng lệnh jar
công cụ.
Từ các tài liệu có vẻ như bạn sẽ ít nhất cần phải có được một JarInputStream
từ một hiện JarFile
, lặp qua các mục sử dụng getNextJarEntry
, và ghi vào một JarOutputStream
với các mục, cũng thêm các tập tin mới của riêng bạn sử dụng mới JarEntry
đối tượng cho mỗi tệp mới.
Here's mã mẫu để viết bình từ đầu lập trình, điều này sẽ mở rộng độc đáo với trường hợp của bạn, sự khác biệt là hầu hết các đối tượng JarEntry
sẽ đến từ JarInputStream
.
- 1. cách thêm một lớp java vào một thư mục trong một tệp jar
- 2. thêm jar vào hàm maven: đường dẫn lớp java
- 3. Cách sử dụng các lớp từ tệp .jar?
- 4. Chạy lớp trong tệp Jar
- 5. thêm đường dẫn lớp JAR trong UBUNTU
- 6. Tôi có thể thêm các phương thức mới vào lớp String trong Java không?
- 7. Ẩn các lớp công khai trong JAR
- 8. Thêm thư mục hiện tại vào đường dẫn lớp của tệp JAR
- 9. Cách trích xuất các lớp từ tệp .jar?
- 10. Maven: thêm thư mục hoặc tệp jar vào đường dẫn lớp hiện tại
- 11. Thêm tệp .jar vào Tibco Designer
- 12. Cách thêm phương thức vào lớp hiện có trong PHP?
- 13. Groovy thêm các phương thức mới vào các lớp Java như thế nào?
- 14. Nhập các lớp Java vào Clojure
- 15. Các tác động của việc có các lớp trùng lặp trong jar java là gì?
- 16. Danh sách các lớp học trong một tệp jar
- 17. cách thêm tệp jar bên ngoài của tôi vào đường dẫn lớp
- 18. Eclipse: Các mẫu lớp Java
- 19. Thêm các lớp phức tạp vào Mongo
- 20. Thêm LINQ vào các lớp của tôi
- 21. Làm thế nào để thêm các tệp Java JAR vào dự án Grails?
- 22. Java - Tạo một Lớp từ một Tệp Jar
- 23. Tôi có thể nhập các tệp lớp Java vào JRuby không?
- 24. Thêm tệp Jar vào WEB-INF/lib
- 25. Tải các lớp động từ jar
- 26. java - Có bao nhiêu lớp quá nhiều? Khi nào thì thích hợp để thêm các lớp mới?
- 27. Thêm các phương thức mới vào các lớp được tạo LINQ to SQL
- 28. Eclipse: thêm nhập vào một loạt các lớp
- 29. Tạo các thuộc tính Java có sẵn trên các lớp?
- 30. OpenXML thêm hàng mới vào tệp Excel hiện có
Tôi được nhắc về việc sửa đổi minecraft. Ngoài sự tò mò, bạn có viết phần mềm này mà bạn đang cố gắng mở rộng không? Có nhiều cách tốt hơn để làm điều đó trong trường hợp đó, bằng cách sử dụng tải lớp động. – Wug
Không cần sửa đổi tệp jar hiện có. Chỉ cần đặt các lớp trong lọ của riêng mình và đảm bảo cả hai lọ đều nằm trên đường dẫn lớp. –
Có thể trùng lặp bởi cùng một người dùng: http://stackoverflow.com/questions/11852954/changing-code-at-runtime-in-java –