Tôi đang cố gắng cấm gọi tới System.exit(int);
trong một số lọ.cấm gọi tới System.exit
Những lọ này sẽ được phát triển bởi các nhóm bên ngoài và được tải bởi ứng dụng "vùng chứa" của chúng tôi.
phản xạ đầu tiên của tôi là sử dụng quản lý bảo mật java:
-Djava.security.manager-Djava.security.debug=all
với ${user.home}/.java.policy
tập tin đơn giản nhất:
grant {};
Mặc dù tôi không còn có thể gọi như System.getProperties() (kể từ Tôi không có java.util.PropertyPermission), tôi có thể làm một System.exit (0) !!
Tùy chọn java.security.debug=all
cho giao diện điều khiển sau:
scl: getPerms ProtectionDomain (file: my-bin-path <no sign certificates>)
sun.misc.Launcher $ AppClassLoader @ 10385c1
<no principals>
java.security.Permissions @ 15b7986 (
(java.lang.RuntimePermission exitVM)
(java.io.FilePermission \my-bin-path\- read)
)
Tại sao mọi tầng lớp trong my-bin-con đường đã java.lang.RuntimePermission exitVM
cấp ?????
nhờ
Rõ ràng 'java.lang.RuntimePermission exitVM' được cấp theo mặc định, có thể bạn phải từ chối nó một cách rõ ràng. – Romain
Tôi hy vọng quyền thoátVM được bật theo mặc định. Nếu một đoạn mã Java kết thúc quá trình thực hiện của nó thì có thể nó cần gọi ngầm là System.exit (0) để báo cho VM biết nó đã được thực hiện. – Chris
Tôi giả định rằng bạn muốn biết cách tắt nó đi, sẽ khuyên bạn nên chỉnh sửa câu hỏi để yêu cầu cụ thể điều đó. – Chris