aspose file tools*
The moose likes Java in General and the fly likes A pain in the ......Please help? Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Java in General
Bookmark "A pain in the ......Please help?" Watch "A pain in the ......Please help?" New topic
Author

A pain in the ......Please help?

Stephen Batsas
Ranch Hand

Joined: Jan 22, 2002
Posts: 117
Dear Ranchers,
I always have problems with setting the class path variable. Setting it has no effect in the current context.
I enter this at the root:
C>set classpath = c:\jdk1.3\lib;c:\classes\;
Has no effect.
My objective is to run the program (includes a group of class files in the same package) from any directory.
Here are the steps I followed. Tell me what Im doing wrong.
All my source files are kept in the following top level directory:
c:\sources
so the full path is c:\sources\com\mydomain\....
All of my class files are kept in the following top level directory:
c:\classes
so the full path is c:\classes\com\mydomain\....
Two simple files are created with the same name package
for the purpose of this demonstration.
----------------------------------------------------------
//Package.java
package com.mydomain.Test;
class Package{
Package(){
System.out.println("Im in the Package constructor");
}
}
-----------------------------------------------------------
//TestPackage.java
package com.mydomain.Test;
class TestPackage{
public static void main(String[] args){
Package p = new Package();
}
}
-----------------------------------------------------------
Package.java is compiled first. The generated class file is placed into the Test folder beneath the c:\classes structure
TestPackage.java doesnt compile unless I use the -classpath option.
ie. javac -classpath c:\classes\; TestPackage.java
After compiling this I place its class file into the same folder beneath the c:\classes structure
Now the two classes are in the same package.
Next I attempt to run TestPackage from the C root: Correct way
C>java com.mydomain.Test.TestPackage
and it doesnt run.
but if I use the classpath option:
C>java -cp :\classes\;
com.mydomain.Test.TestPackage
No problem!
What am I doing wrong ranchers?
Or is there another way to set the classpath variable to the context?
Please help me on this one ranchers because I need to move on.

Regards
Stephen Batsas
Sun Certified Programmer For Java[tm]2
Maciej Kolodziej
Greenhorn

Joined: Feb 11, 2002
Posts: 26

[cut]
C:\java com.mydomain.Test.TestPackage
and it doesnt run.
but if I use the classpath option:
C:\java -cp :\classes\;
com.mydomain.Test.TestPackage
No problem!
What am I doing wrong ranchers?
[cut]

Everything is fine. The second command is correct. And, honestly, I don't understand why are You so surprised. How shoud java know (in the first case) where Your classes are? It'd have to search all folders in C:\ to find Your com.mydomain.Test package. You have to tell where it is, that means in classpath You have to give the folder name where top of the package folder structure is.
If You want to run Your program from anywere, just create a batch file in C:\classes containing:
java -classpath . com.mydomain.Test.TestPackage
[ February 12, 2002: Message edited by: Maciej Kolodziej ]

MK
Stephen Batsas
Ranch Hand

Joined: Jan 22, 2002
Posts: 117
Thanks for the info.
The problem:
Creating a batch file defeats the purpose of being able to run the package from any directory. I would have to place copy of the batch file in every directory.

Regards
Stephen Batsas
Sun Certified Programmer For Java[tm]2
Cindy Glass
"The Hood"
Sheriff

Joined: Sep 29, 2000
Posts: 8521
No Stephen, just put the .bat file in a directory that is in the path and it will be found from whatever directory you are sitting in when you call it.
If you want to have the .bat file in a specific directory, then just put that directory into the path.
 
 
subject: A pain in the ......Please help?