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@xxxxxxxxxxxxxxxxxxxxxxx> wrote in message
news:qe%Ig.2$bR.0@xxxxxxxxxxxxxxx

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/
.



Relevant Pages

  • Re: garbage collection of remote objects
    ... LifetimeServiceManager on ... >> public interface IMy ... >> public static void Main ...
    (microsoft.public.dotnet.framework.remoting)
  • Re: pl. anyone can provide ans for the following code
    ... extends PrintStream ...
    (comp.lang.java.programmer)
  • Re: aligning components within boxes
    ... public class Test extends JFrame { ... public static void main{ ... Everybody else gave you excellent examples of how to fix your alignment problems with BoxLayout. ...
    (comp.lang.java.programmer)
  • Re: How to escape Main?
    ... If - as in the code below - put the call to init() in main, main gives me the compile method. ... public class myClass ... public static void main{ ...
    (comp.lang.java.programmer)
  • Re: JAR files and manifest: Class-Path
    ... where the application JAR file resides. ... >dir, there's also a lib dir, nothing special really. ... a directory called "drivers" which is below the directory where the ... ClassLoader loader = ExtensionClassLoader.getSingleton; ...
    (comp.lang.java.programmer)