Распечатать сообщение после успешной компиляции

У меня есть простой код JAVA, он просто напечатает приветствие после компиляции и запуска программы. Но я хочу напечатать одно сообщение после успешного завершения. Это возможно? Если да, то как?


person Android Dev    schedule 17.09.2015    source источник
comment
вам нужно копаться в событии выхода родительского/дочернего процесса   -  person Steve    schedule 17.09.2015


Ответы (2)


Хотя следующий фрагмент кода слишком излишен для вашей задачи, но, расширяя мой комментарий, вы можете отправить пользовательскую задачу в класс, который реализует Callable.

public class Main {
    public static void main(String[] args) {
        final ExecutorService executorService;
        final Future<Integer> future;
        final int statusCode;

        executorService = Executors.newFixedThreadPool(1);
        future = executorService.submit(new TextMessagePrinter());

        try {
            statusCode = future.get();
            if (statusCode == 10) { // Printed successfully
                System.out.println("JOB DONE. EXITING...");
                Runtime.getRuntime().exit(0); // A zero status code indicates normal termination.
            } else {
                System.out.println("ERR...SOMETHING WEIRD HAPPENED!");
                Runtime.getRuntime().exit(statusCode);  // A non-zero status code indicates abnormal termination.
            }
        } catch (InterruptedException | ExecutionException e) {
            e.printStackTrace();
        } finally {
            executorService.shutdownNow();
        }
    }
}

class TextMessagePrinter implements Callable<Integer> {
    public Integer call() {
        Integer STATUS_CODE;
        try {
            System.out.println("Printing hello..."); // Try printing something
            System.out.println("Dividing 6 by 0 gives us: " + 6 / 0); // And then you try to do something knowing which will result in an exception
            STATUS_CODE = 10; // Indicates success.
        } catch (ArithmeticException e) {
            STATUS_CODE = 20; // Indicates failure...setting status code to 20.
        }
        return STATUS_CODE;
    }
}

Выполнение приведенного выше кода в моей среде IDE дает мне следующий результат:

  • Когда происходит исключение

(Обратите внимание, что код состояния, установленный в блоке catch, выводится после завершения процесса):

введите здесь описание изображения

  • Никаких исключений не происходит, все происходит нормально:

(Комментарий к следующей строке)

System.out.println("Dividing 6 by 0 gives us: " + 6 / 0);

введите здесь описание изображения

person Sandeep Chatterjee    schedule 17.09.2015

Если вы имеете в виду завершение выполнения приложения, я думаю, вы ищете ответ в этом вопросе StackOverflow: Java Runtime Shutdown Hook .

Или, если вы хотите сделать то, что указано в заголовке вопроса, и сделать что-то после сборки, вы можете рассмотреть инструмент автоматизации сборки, например Мэйвен.

person Viorel    schedule 17.09.2015