This week's book giveaways are in the Java EE and JavaScript forums.
We're giving away four copies each of The Java EE 7 Tutorial Volume 1 or Volume 2(winners choice) and jQuery UI in Action and have the authors on-line!
See this thread and this one for details.
The moose likes Java in General and the fly likes Need Clarification on CLASS PATH - Please help Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of The Java EE 7 Tutorial Volume 1 or Volume 2 this week in the Java EE forum
or jQuery UI in Action in the JavaScript forum!
JavaRanch » Java Forums » Java » Java in General
Bookmark "Need Clarification on CLASS PATH - Please help" Watch "Need Clarification on CLASS PATH - Please help" New topic
Author

Need Clarification on CLASS PATH - Please help

Kathirvel Subakaran
Greenhorn

Joined: Jun 04, 2010
Posts: 4
Hi all, I need your help on this. Its driving me crazy. Please explain the q&a below a bit more.. My doubt is javac will look in the current directory for B.java which is in a package, so we need to mention xcom/B.java. How about A.class it's also in that package, should we not mention it as ./xcom

Given the default classpath:
/foo

And this directory structure:
foo
|
test
|
xcom
|--A.class
|--B.java
And these two files:
package xcom;
public class A { }
package xcom;
public class B extends A { }


Which allows B.java to compile? (Choose all that apply.)
A. Set the current directory to xcom then invoke
javac B.java

B. Set the current directory to xcom then invoke
javac -classpath . B.java

C. Set the current directory to test then invoke
javac -classpath . xcom/B.java

D. Set the current directory to test then invoke
javac -classpath xcom B.java

E. Set the current directory to test then invoke
javac -classpath xcom:. B.java

Answer:

C is correct. In order for B.java to compile, the compiler first needs to be able to find
B.java. Once it's found B.java it needs to find A.class. Because A.class is in the
xcom package the compiler won't find A.class if it's invoked from the xcom directory.
Remember that the -classpath isn't looking for B.java, it's looking for whatever classes
B.java needs (in this case A.class).

A, B, and D are incorrect based on the above. E is incorrect because the compiler can't
find B.java.
 
It is sorta covered in the JavaRanch Style Guide.
 
subject: Need Clarification on CLASS PATH - Please help