gpt4 book ai didi

java - 防止 API 中的 System.exit()

转载 作者:IT老高 更新时间:2023-10-28 20:58:22 26 4
gpt4 key购买 nike

我正在使用第三方库,如果遇到异常,它会执行 System.exit()。我正在使用 jar 中的 API。无论如何我可以阻止 System.exit() 调用,因为它会导致我的应用程序关闭?由于许多其他许可问题,删除 System.exit() 后,我无法反编译和重新编译 jar。我曾经在stackoverflow中遇到过一个[我不记得的其他问题]的答案,我们可以使用Java中的SecurityManager来做这样的事情。

最佳答案

您可以安装一个禁用 System.exit() 的安全管理器:

  private static class ExitTrappedException extends SecurityException { }

private static void forbidSystemExitCall() {
final SecurityManager securityManager = new SecurityManager() {
public void checkPermission( Permission permission ) {
if( "exitVM".equals( permission.getName() ) ) {
throw new ExitTrappedException() ;
}
}
} ;
System.setSecurityManager( securityManager ) ;
}

private static void enableSystemExitCall() {
System.setSecurityManager( null ) ;
}

编辑:Max在下面的评论中指出

as of Java 6, the permission name is actually "exitVM."+status, e.g. "exitVM.0".

但是,exitVM.*权限是指所有的退出状态,exitVM被保留为exitVM.*的简写,所以上面的代码仍然有效(见 documentation for RuntimePermission )。

关于java - 防止 API 中的 System.exit(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5401281/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com