views:

51

answers:

3

Hi guys

I want to run a java program using shell script. The java program is in p2 directory and its name is maxconnect4 and I have already compiled it, the class name is maxconnect4. I write the shell commands like this:

java p2/maxconnect4 arg1 arg2 arg3

This shell command does not work. It give an error: Exception in thread "main" java.lang.NoClassDefFoundError: p2/maxconnect

However, I compile the java program in this way:

javac p2/*.java, and it works.

Thanks in advanced

Zhong

+2  A: 

Assuming that the class has package p2; declared, that should work -- although the more standard way is to use dots instead of slashes in the fully-qualified classname -- java p2.maxconnect.

If the class has no package declaration, try java -cp p2 maxconnect. You need to specify a classpath such that the class file is found at the top level.

If the class has some other package declaration, you need to put it into a folder that matches its package.

Dave Costa
Thanks, it works.
FihopZz
+1  A: 

Try with

java p2.maxconnect4 arg1 arg2 arg3

Also, you can try to check the class name, and verify if the file p2/maxconnect4.class exists.

Vivien Barousse
Thanks very much
FihopZz
+1  A: 

Just use java -cp p2 maxconnect4 arg1 arg2 arg3. -cp sets the classpath of the JVM. Edit: I assume you don't use a package for maxconnect4.

Tassos Bassoukos