Win a copy of Design for the Mind this week in the Design forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

development (package and directories)

 
Adolfo Eloy
Ranch Hand
Posts: 146
Eclipse IDE Java Linux
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hello all.

I'm confused about the relation between packages and directory structures.

considering the following directory structure:

/home/adolfo/myProject/source/com/wickedlysmart/MyClass.java
/home/adolfo/myProject/classes/com/wickedlysmart/MyClass.java

And the MyClass source code as follows:



when I'm into the /home/adolfo/myProject and I run as follows:
java -cp classes com.wickedlysmart.MyClass

I get the output "I see dead threads" normally.

So, regarding this scenario, if I'm into the /home/adolfo/myProject/classes/com/wickedlysmart
Why I can't execute my class with the following commands:

java com.wickedlysmart.MyClass

or

java MyClass

Thanks.

 
Stephan van Hulst
Bartender
Pie
Posts: 5553
53
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Where should Java start looking for your class?

.../classes/com/wickedlysmart/com/wickedlysmart/MyClass.class ?

And what if you have a class named MyClass.java in the default package, located in .../myProject/classes ? If you run java MyClass, should it run MyClass in the current directory, or the one located in the default package?
 
Javin Paul
Ranch Hand
Posts: 295
Eclipse IDE Firefox Browser Linux
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Hi Adolfo Eloy,

Java start looking for user defined classes from environment variable "CLASSPATH" until you specifiy -cp or -classpath option while running java , which overrides
default classpath and is a preferred way for setting classpath for individual application.

default value for CLASSPATH in java is current directory "."

so if your classpath is set to current directory "." and you give command "java com.wickedlysmart.MyClass" , it will look for MyClass in directory ./com/wickedlysmart/ and if it finds the class it will execute .

but if you give name only "MyClass" than it would be incorrect name for that class , so it won't run.

but it all depends upon what is value or CLASSPATH in your environment .


 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic