Как выйти с ненулевым кодом выхода из ловушки отключения? - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть 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());
    }
}
...