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