当前位置: 首页 > 面试题库 >

如何防止对System.exit()的调用终止JVM?

姚新霁
2023-03-14
问题内容

我几乎可以肯定这是不可能的,但是值得一试。

我正在为某个工具编写命令行界面。我说的是一个调用另一个Java应用程序的Java应用程序。该工具System.exit在执行后调用,从而终止了我自己的执行环境。我不要

有什么方法可以忽略System.exit来电吗?


问题答案:

是的,使用SecurityManager可以实现。尝试以下

class MySecurityManager extends SecurityManager {
  @Override public void checkExit(int status) {
    throw new SecurityException();
  }

  @Override public void checkPermission(Permission perm) {
      // Allow other activities by default
  }
}

在您的班级中,使用以下调用:

myMethod() {
    //Before running the external Command
    MySecurityManager secManager = new MySecurityManager();
    System.setSecurityManager(secManager);

    try {
       invokeExternal();
    } catch (SecurityException e) {
       //Do something if the external code used System.exit()
    }
}


 类似资料:
  • 不知道为什么会投反对票,我问了一个简单的问题,有人回答了。我不能那样做,那就试试别的吧。将使用true false来测试进入模拟循环的位置。

  • 我有一个Android客户端向服务器发出HTTPS请求。防火墙日志包含不需要的连接请求方法的条目。 何时发送 CONNECT 请求,如何防止其发送?我只期望收到 GET 请求。我的理解是,对 openConnection() 的调用实际上并没有发出请求,并且 GET 请求将继续调用以获得响应消息()。 如何禁止 http 客户端尝试建立代理隧道? 以下是我发送连接和拨打电话的方式: 编辑: 这是我

  • 我有一个页面,有一个子组件用于浏览按钮,在父组件上,通过回调我用浏览文件设置状态。

  • 我正在使用DTO模式,我正在使用一个自动映射器库来帮助将域对象映射到DTO对象,它工作得很好。

  • 本文向大家介绍如何终止WebWork?相关面试题,主要包含被问及如何终止WebWork?时的应答技巧和注意事项,需要的朋友参考一下 Web Worker 使用教程

  • 我试图将每个列表都位于嵌套对象内的webservice模型映射到更简单的对象。 模型1 映射非常简单: 映射工作正常,除了一个问题。当我将带有null子级的父母映射到父母2并返回父母时,儿童对象是用空列表创建的。有什么方法可以防止这种情况吗?