我几乎可以肯定这是不可能的,但值得一试。
我正在为某个工具编写命令行界面。我说的是调用另一个 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
}
}
在您的类(class)中使用以下调用:
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()
}
}
关于java - 如何防止对 System.exit() 的调用终止 JVM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5549720/