Hardik Lakhani
Hardik Lakhani

Reputation: 1564

Print Message after successfully compilation

I have a simple JAVA code it will just print hello after compile and Run the Program. But I want to print one message after successful completion. Is this possible? If yes than how?

Upvotes: 3

Views: 1621

Answers (2)

Viorel
Viorel

Reputation: 349

If you mean completion of the application's Runtime, I think you are looking for the answer in this StackOverflow question: Java Runtime Shutdown Hook.

Or if you want to do what is in the question title and do something after building, then you may consider a build automation tool, like Maven.

Upvotes: 0

Sandeep Chatterjee
Sandeep Chatterjee

Reputation: 3249

Although, the following code snippet is way too overkill for your task but, expanding on my comment - you may want to submit a custom task to a class which implements 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;
    }
}

Running the above code on my IDE gives me the following output:

  • When the exception happens

(Note the status code set in the catch block getting printed when the process finishes):

enter image description here

  • No exception happens, everything happens fine:

(Comment the following line)

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

enter image description here

Upvotes: 1

Related Questions