我有一个Javaagent,可在应用程序运行时收集某些信息。它还会注册一个关闭钩子,在应用程序退出时,该钩子会将收集到的数据与一些黄金数据进行比较,如果比较失败,则期望退出状态为非零。
但是,我无法执行此操作,因为调用System.exit(exitStatus)似乎迫使应用陷入僵局。
有没有一种方法可以退出状态为非零的退出状态 SHUTDOWN HOOK
我也尝试使用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());
}
}