Sản phẩm của chúng tôi là một ứng dụng máy tính để bàn OS X độc lập được viết bằng Java. Chúng tôi bao gồm một JRE được nhúng để chạy phần mềm của chúng tôi.Cách tắt cơ chế mở rộng Java
Các quy tắc cho JRE khởi động dường như đặt bất kỳ tập tin JAR trong /usr/lib/java
, /Library/Java/Extensions
, và ~/Library/Java/Extensions
trên classpath TRƯỚC các thư viện chúng tôi một cách rõ ràng bao gồm trên classpath.
Nếu người dùng có bất kỳ tệp JAR nào trong bất kỳ thư mục cơ chế mở rộng Java nào, thì các tệp JAR đó sẽ được thêm vào đường dẫn lớp của chúng tôi. Sự cố hỗ trợ gần đây phát sinh do khách hàng có phiên bản cũ hơn của thư viện bên thứ ba quan trọng trong số /usr/lib/java
- điều này đã khiến phần mềm của chúng tôi gặp sự cố bất ngờ khi khởi động.
Tôi đã không thể xác định cách tôi có thể tắt cơ chế tiện ích mở rộng này khi gọi JRE được nhúng trong ứng dụng của chúng tôi. Tôi có thể làm cái này như thế nào?
─────────
LƯU Ý: có vẻ như cơ chế mở rộng này không được chấp và cuối cùng sẽ được gỡ bỏ: https://blogs.oracle.com/java-platform-group/entry/planning_safe_removal_of_under)
Tôi nghĩ rằng bạn có thể chỉ định -Djava.ext.dir để trỏ đến một vị trí an toàn. Bạn không chắc chắn nếu điều này làm việc với trình khởi chạy Mac, nó hoạt động trên Windows. – eckes
Bạn có nghĩa là bạn gói JRE được nhúng vào ** tệp jar của riêng bạn ** không? Làm thế nào để bạn đóng gói/bao gồm JRE được nhúng của bạn? –
Tôi không có câu trả lời hoàn chỉnh. Điều đầu tiên đến với tâm trí của tôi là sửa đổi các chính sách bảo mật của JRE. Các lớp sẽ được tải với một số cuộc gọi đến phương thức loadClass, hành vi tải phụ thuộc vào các chính sách bảo mật. –