我有一个 javaagent 在应用程序运行时收集某些信息。它还注册了一个关闭钩子,在应用程序退出时将收集的数据与一些黄金数据进行比较,如果比较失败,预计将以非零退出状态退出。
但是,我无法执行此操作,因为调用 System.exit(exitStatus) 似乎会强制应用程序陷入死锁。
有没有办法以非零退出状态从关闭挂钩中退出
我也尝试使用 java.lang.Runtime.halt(exitStatus) 但它似乎没有帮助。回声$?似乎总是指示退出状态为 0
我的申请代码
public class Sample {
public static void main(String args[]) {
System.out.println("My code");
}
}
我的代理代码:
import java.lang.instrument.Instrumentation;
class CompareDataAtTheTimeOfExit extends Thread {
@Override
public void run() {
// If comparison fails exit with 5
}
}
class Agent {
public static void premain(String args, Instrumentation inst) throws Exception {
Runtime r = Runtime.getRuntime();
r.addShutdownHook(new CompareDataAtTheTimeOfExit());
}
}