如何防止对System.exit()的调用终止JVM?
我几乎可以肯定这是不可能的,但是值得一试。
我正在为某个工具编写命令行界面。我说的是一个调用另一个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()
}
}
以上是 如何防止对System.exit()的调用终止JVM? 的全部内容, 来源链接: utcz.com/qa/403365.html