Forums Register Login

Runtime behavior after command-line invocation

+Pie Number of slices to send: Send
Courtesy of education.oracle.com



Which command-line invocation will produce the output found?
a) java -Dx=y x y z
b) java -Px=y x y z
c) java -Dx=y x x y z
d) java -Px=y x x y z
e) java x x y z -Dx=y
f) java x x y z -Px=y

Option C is correct. -D sets a property and args[1] is the second argument (whose value is y)



This is what I understand:

1. The program is assigning the system property of "x" to String
2. When the runtime environment is invoked with c) java -Dx=y x x y z , it is setting the system property of "x" to "y". Then the program x is invoked. Next, args[0] get the value of "x". Then, args[1] gets the value of "y". This value of "y" is equal to the system value of "x", which is "y". Hence, "found" is printed.

Here is my question

When I invoke the runtime environment with

java x x y z -Dx=y

or

java x x y z -Px=y

Why do I get the following runtime error:

Exception in thread "main" java.lang.NullPointerException
at x.main(x.java:4)



We are invoking the runtime environment with keyword "java", the name of the program "x", and the arguments that follow.

Please guide.
+Pie Number of slices to send: Send
From what I see here

java [ options ] class [ argument ... ]
java [ options ] -jar file.jar [ argument ... ]
javaw [ options ] class [ argument ... ]
javaw [ options ] -jar file.jar [ argument ... ]

options



the command-line-options always come before the filename and the args.

So in the two cases that you mentioned, the -Dx=y or -Px=y wouldn't be treated as command-line-options but rather as command line arguments.

That's what I think. You can test it by printing out all the command line args and checking if they get printed
HTH,
Vishwa
+Pie Number of slices to send: Send
 

Vishwanath Krishnamurthi wrote:

So in the two cases that you mentioned, the -Dx=y or -Px=y wouldn't be treated as command-line-options but rather as command line arguments.



But if they are treated like command-line arguments, why would the jvm throw an error. That's the disconnect.
+Pie Number of slices to send: Send
Since there is no property with the name x, so String p will be null. Then calling equals method on the null reference will result in a NullPointerException...
This. Exactly this. This is what my therapist has been talking about. And now with a tiny ad:
a bit of art, as a gift, that will fit in a stocking
https://gardener-gift.com


reply
reply
This thread has been viewed 1155 times.
Similar Threads
Sierra/Bates question re: reassigning arrays
System.getProperty question from SunExam
Command line argument question
question about properties and command line arguements
Result of the Code
More...

All times above are in ranch (not your local) time.
The current ranch time is
Mar 18, 2024 22:12:19.