File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes pathing - what is the reasoning behind this ? Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Certification » Programmer Certification (SCJP/OCPJP)
Bookmark "pathing - what is the reasoning behind this ?" Watch "pathing - what is the reasoning behind this ?" New topic

pathing - what is the reasoning behind this ?

Rahul Sudip Bose
Ranch Hand

Joined: Jan 21, 2011
Posts: 637

I have with a package statement (package X; ) . I put it in a folder X and compile it from X. Then, to run the code i have to go one folder above X and use the complete package name to run the class file. But if i run it from X , i get an error. Any explanation for this ?
Is this the reason ??? When we are inside X , jvm searches X and it finds a myfile.class with a package statement. So, it does not load this file because it expects it to be a part of another folder X (inside the current X) .

I made a folder X (call it X^) inside X and put myfile.class into X^ . Then from X >>> java X.myfile OR java -classpath . X.myfile WORKS . Just java myfile fails.

PS : One can memorize such things. But how much can one learn this way ? Reasoning will eliminate the need to memorize.

SCJP 6. Learning more now.
Ikpefua Jacob-Obinyan
Ranch Hand

Joined: Aug 31, 2010
Posts: 394

Rahul, you dont need to memorise, just 'burn-it-in' that:
When you declare a class in a package, invocation must take place in the 'immediate-super' directory.

Here is the logical reason:

-Lets say the name of your class is 'Rahul' and you declare it in a package called 'My'
-At this point java recognises your class as 'MyRahul' and NOT 'Rahul'.
I know your next question will be why??? The following may explain:

At work place in real life as a programmer:
If I name my class 'Rahul' and you name yours 'Rahul' in the file system and we
need to use your class, how do we tell java which 'Rahul' to run???.

I hope this helps.

In Your Pursuit Towards Certification, NEVER Give Up.
Rahul Sudip Bose
Ranch Hand

Joined: Jan 21, 2011
Posts: 637

Ikpefua Jacob-Obinyan wrote:
Rahul, you dont ..... to run???.

Your arguments sound logical to me I hope there is nothing more to this issue that we have overlooked.

good luck

Javin Paul
Ranch Hand

Joined: Oct 15, 2010
Posts: 295

Hi Rahul , Java class loading is based upon classpath and every class is identified by its package name + class name and that's the reason you can have two class with same name in two different package. you might find my post How Classpath works in Java interesting

SQL Query Interview Question java67 Javarevisited
I agree. Here's the link:
subject: pathing - what is the reasoning behind this ?
jQuery in Action, 3rd edition