Re: Running java programs from class files
Babu Kalakrishnan wrote:
Knute Johnson wrote:
Babu Kalakrishnan wrote:
Knute Johnson wrote:
Oliver Wong wrote:
"Knute Johnson" <nospam@rabbitbrush.frazmtn.com> wrote in message
news:qe%Ig.2$bR.0@newsfe06.phx...
Babu Kalakrishnan wrote:
The commandline for the above example in that case would be :
java -classpath /xyz/abc MyPackage.MyClass
That doesn't work for me although I have seen reference to it before
like that. Could it be that it doesn't work on Windows like that?
It works for me on WinXP SP2:
java -cp "D:\Oliver's Documents\Workspace\Test\bin" D
to run a class called "D" with no package whose classfile is in
"D:\Oliver's Documents\Workspace\Test\bin"
- Oliver
That does for me too. But put it in a package and it won't.
Interesting - Seems to work for me even with classes within a package -
Running TCPServer.class in package test :
java -classpath "C;\Documents and
Settings\Babu\workspace\TestServer\classes" test.TCPServer
Main: Listening for connections on port 2345
Testing on XP Home SP2
BK
package test;
public class Test {
public static void main(String[] args) {
System.out.println("It works!");
}
}
C:\>javac test/Test.java
I'd assume that you now have Test.java and Test.class inside C:\test.
C:\>java test.Test
It works!
OK - here the default classpath assumed by the JVM is "." (which is
"C:\"), so it works
C:\>cd test
C:\test>java -cp "C:\test" test.Test
Exception in thread "main" java.lang.NoClassDefFoundError: test/Test
Your commandline here should be :
java -cp "C:\" test.Test
because the classpath is to be set to the root of the package hierarchy
- which is C:\ in your case.
With the commandline you used, the class file is expected to be
C:\test\test\Test.class
BK
Thank you so much guys, this has confused the s**t out of me for years.
I think the most confusing part is the root business.
So now that you solved that one, show me how to use a jar library on the
command line when I run a java program. I can make it compile but I
can't make it run. I can get it to work if I put the jar file in the
Class-Path: line in the manifest and put the jar file in the same
directory as the program jar file but not from the command line.
Test is my slightly modified class that calls a static method in
lib.Lib. The Lib class has been compiled and put into a jar file,
lib.jar in the /lib directory. I then compile Test.java from the /test
directory and run the .class file with no problems. You will see that
the lib.Lib class can't be found once I jar it.
package test;
public class Test {
public static void main(String[] args) {
System.out.println("It works!");
lib.Lib.lib();
}
}
package lib;
public class Lib {
public static void lib() {
System.out.println("lib");
}
}
C:\lib>dir
Volume in drive C has no label.
Volume Serial Number is 7C27-9663
Directory of C:\lib
08/30/2006 12:15 PM <DIR> .
08/30/2006 12:15 PM <DIR> ..
08/30/2006 11:06 AM 728 Lib.jar
08/30/2006 10:46 AM 116 Lib.java
2 File(s) 844 bytes
2 Dir(s) 62,081,531,904 bytes free
C:\lib>
C:\test>dir
Volume in drive C has no label.
Volume Serial Number is 7C27-9663
Directory of C:\test
08/30/2006 12:12 PM <DIR> .
08/30/2006 12:12 PM <DIR> ..
08/30/2006 11:51 AM 162 Test.java
1 File(s) 162 bytes
2 Dir(s) 62,081,544,192 bytes free
C:\test>javac -cp /lib/Lib.jar Test.java
C:\test>java -cp /lib/Lib.jar;/ test.Test
It works!
lib
C:\test>cd \
C:\>jar cvfe test/Test.jar test.Test test/*.class
added manifest
adding: test/Test.class(in = 452) (out= 310)(deflated 31%)
C:\>java -cp /lib/Lib.jar -jar test/Test.jar
It works!
Exception in thread "main" java.lang.NoClassDefFoundError: lib/Lib
at test.Test.main(Test.java:6)
C:\>
--
Knute Johnson
email s/nospam/knute/