| Author |
Runtime behavior after command-line invocation
|
Sandra Bachan
Ranch Hand
Joined: Feb 18, 2010
Posts: 434
|
|
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.
|
Marriage Made in Heaven
http://www.youtube.com/user/RohitWaliaWedsSonia
|
 |
Vishwanath Krishnamurthi
Ranch Hand
Joined: Jun 04, 2007
Posts: 331
|
|
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
|
Blog
|
 |
Sandra Bachan
Ranch Hand
Joined: Feb 18, 2010
Posts: 434
|
|
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.
|
 |
Ankit Garg
Saloon Keeper
Joined: Aug 03, 2008
Posts: 9189
|
|
|
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...
|
SCJP 6 | SCWCD 5 | Javaranch SCJP FAQ | SCWCD Links
|
 |
 |
|
|
subject: Runtime behavior after command-line invocation
|
|
|