Tôi cần sử dụng các lọ bổ sung trong khi thực hiện chương trình. Tôi tự thêm các lọ vào thư mục tương đối ./lib và sau đó thực hiện chương trình. Làm thế nào tôi nên xác định classpath trong file manifest?Làm thế nào để sử dụng biểu thức chính quy trong classpath java manifest?
Trả lời
Bạn không thể sử dụng cụm từ thông dụng hoặc các ký tự đại diện khác trong thuộc tính Class-Path
của tệp kê khai của mình.
Chỉ có một ký tự đại diện được hỗ trợ trong Java và chỉ hoạt động nếu được chỉ định trên dòng lệnh trên lời gọi "thủ công" java
(tức là không sử dụng -jar
): using directoryname/*
.
Có cách nào khác ngoài việc sử dụng lệnh -cp hoặc hàm nạp lớp không? – Suraj
@Suraj: hỏi về các cách tiếp cận khác mà không nói cho chúng tôi biết tại sao những cách tiếp cận đó không tốt cho bạn ... thay vì vô nghĩa. Và cá nhân, tôi thấy nó khá thô lỗ. –
Xin lỗi về điều đó! Trên thực tế tôi đang lập trình mã cho một cách tiếp cận thân thiện với người dùng và triển khai tương tự trong một jar thực thi. Nó là để có một cơ sở dữ liệu chung nơi người dùng có thể chọn cơ sở dữ liệu của mình. Do đó, anh ta cần chỉ định jar kết nối cần thiết và đặt trong thư mục có thể truy cập chương trình. Tôi nghĩ rằng nếu tôi có thể sử dụng biểu thức chính quy trong classpath manifest như lib/* OR lib/* jar để khi chương trình thực hiện nó tìm thấy tất cả các lọ. – Suraj
Tôi không quá chắc chắn về những gì bạn muốn một cách chính xác, nhưng bạn có thể thêm lọ trong thời gian chạy:
- danh sách (jar) file sử dụng File.list() trên thư mục chứa các lọ
- làm một regex trên tên tập tin bạn lấy
- sử dụng một URLClassLoader để tải jar
tôi không biết chính xác làm thế nào để đăng ký (nếu cần thiết) các URLClassLoaders đến classloader chính. Nhưng đó là cách tôi nghĩ tôi sẽ đi.
Bạn không thể sửa đổi trình nạp lớp bootstrap trong spec (có các hacks xấu xí có thể làm điều đó, bằng cách sử dụng 'addURL()'). Giải pháp phù hợp với thông số kỹ thuật là đặt lớp boostrapping vào trong lọ riêng của nó, sử dụng nó để tìm tất cả các lọ khác (bao gồm cả lọ chính "thực") và tải tất cả những thứ đó trong một trình nạp lớp. Sau đó gọi phương thức chính thực từ lớp chính thực sự. –
- 1. Biểu thức chính quy Java OR operator
- 2. Làm thế nào để thoát khỏi văn bản cho biểu thức chính quy trong Java
- 3. Biểu thức chính quy java tìm và thay thế
- 4. Làm cách nào để sử dụng biến trong biểu thức chính quy?
- 5. Làm cách nào để xác thực Biểu thức chính quy?
- 6. Làm cách nào để diễn tả ":" nhưng không phải trước "\" trong biểu thức chính quy Java?
- 7. tách một chuỗi có thoát khỏi chuỗi sử dụng biểu thức chính quy trong Java
- 8. Làm cách nào để sử dụng các biểu thức chính quy với Mongodb ODM của Doctrine?
- 9. JFormattedTextField sử dụng định dạng biểu thức chính quy?
- 10. Làm thế nào để phát hiện một số dấu chấm động sử dụng một biểu thức chính quy
- 11. Biểu thức chính quy Java cho số âm?
- 12. Biểu thức chính quy thay thế trong Visual Studio
- 13. Làm thế nào để đáp lại trong biểu thức chính quy Ruby (regex) với gsub khi tôi sử dụng nhóm?
- 14. Làm thế nào để loại bỏ văn bản trong ngoặc đơn sử dụng một biểu thức chính quy
- 15. Cụm từ thông dụng để tìm biểu thức chính quy?
- 16. Làm cách nào để tạo biểu thức chính quy cho điều này trong android?
- 17. Vấn đề hiệu suất biểu thức chính quy Java
- 18. Biểu thức chính quy JavaScript
- 19. Biểu thức chính quy java trả về false
- 20. Làm thế nào để trích xuất nhóm từ biểu thức chính quy trong Oracle?
- 21. Java - biểu thức chính quy cho định dạng get số
- 22. Biểu thức chính quy Java, khớp với mọi thứ nhưng
- 23. Biểu thức chính quy của Python HOẶC
- 24. Biểu thức chính quy kết thúc
- 25. Quy tắc biểu thức chính quy trong Outlook 2007?
- 26. Python có sử dụng NFA để đánh giá biểu thức chính quy trong mô-đun không?
- 27. Hạn chế của Biểu thức chính quy?
- 28. Clojure multiline biểu thức chính quy
- 29. Làm thế nào tôi có thể gỡ lỗi một biểu thức chính quy trong python?
- 30. Eclipse, tìm kiếm biểu thức chính quy và thay thế
Tôi đã nhận được giải pháp! Tôi sẽ bao gồm các biến như: Đường dẫn lớp: lib/externaljar1.jar lib/externaljar2.jar v.v. tối đa 5 hoặc 10 giá trị. Sau đó, trong khi bao gồm cả lọ trong thời gian chạy, bệnh chỉ cần đổi tên nó như externaljar1, externaljar2 vv và sao chép nó vào thư mục lib. ;-) – Suraj
Tôi cảm ơn mọi người đã trả lời câu hỏi của tôi. Cảm ơn rất nhiều! – Suraj