我想阻止某些JAR文件调用System.exit(int);
。
这些JAR文件将由外部团队开发,并由我们的“容器”应用程序加载。
我的第一个反应是使用Java安全管理器:
-Djava.security.manager-Djava.security.debug=all
使用最简单的 ${user.home}/.java.policy
文件:
grant {};
虽然我无法再调用类似 System.getProperties() 这样的方法(因为我没有 java.util.PropertyPermission),但我可以执行 System.exit(0)!!
选项 java.security.debug=all
会在控制台输出以下内容:
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)
)
为什么我的bin路径中的所有类都被授予java.lang.RuntimePermission exitVM
权限?
谢谢。
java.lang.RuntimePermission exitVM
权限,也许您需要明确拒绝它。 - Romain${java.home}/lib/security/java.security
- ptomli