wood burning stoves 2.0*
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

Win a copy of OCA/OCP Java SE 7 Programmer I & II Study Guide this week in the OCPJP forum!
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 myfile.java 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: 281

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

http://javarevisited.blogspot.com - java classpath - Java67 - java hashmap - java logging tips java interview questions Java Enum Tutorial
I agree. Here's the link: http://aspose.com/file-tools
subject: pathing - what is the reasoning behind this ?