У меня есть javaagent, который собирает определенную информацию во время работы приложения.Он также регистрирует ловушку отключения, которая во время выхода из приложения сравнивает собранные данные с некоторыми «золотыми» данными и, как ожидается, выйдет с ненулевым статусом выхода, если сравнение не удастся.
Однако я не могусделать это, так как вызов System.exit (exitStatus), по-видимому, приводит приложение к тупику.
Есть ли способ выхода с ненулевым состоянием выхода ИЗ ВНУТРИ SHUTDOWN HOOK
Я также пытался использовать java.lang.Runtime.halt (exitStatus), но, похоже, это не помогло.echo $?Кажется, всегда указывает состояние выхода 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());
}
}