I want to either display a message in the console or a pop up, so in case a parameter is not specified, I want to know to which should I display
Something like:
if( !file.exists() ) { if( fromCommandLine()){ System.out.println("File doesn't exists"); }else if ( fromDoubleClickOnJar() ) { JOptionPane.showMessage(null, "File doesn't exists"); } }
Type 'javac MyFirstJavaProgram. java' and press enter to compile your code. If there are no errors in your code, the command prompt will take you to the next line (Assumption: The path variable is set). Now, type ' java MyFirstJavaProgram ' to run your program.
You can use the jps utility that is included in the JDK to find the process id of a Java process. The output will show you the name of the executable JAR file or the name of the main class. jps tool is now included in JDK/bin directory.
The straight forward answer is that you cannot tell how the JVM was launched.
But for the example use-case in your question, you don't really need to know how the JVM was launched. What you really need to know is whether the user will see a message written to the console. And the way to do that would be something like this:
if (!file.exists()) { Console console = System.console(); if (console != null) { console.format("File doesn't exists%n"); } else if (!GraphicsEnvironment.isHeadless()) { JOptionPane.showMessage(null, "File doesn't exists"); } else { // Put it in the log } }
The javadoc for Console, while not water tight, strongly hints that a Console object (if it exists) writes to a console and cannot be redirected.
Thanks @Stephen Denne for the !GraphicsEnvironment.isHeadless()
tip.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With