简体   繁体   中英

How can I run an Eclipse compiled Java class from the command line?

I am writing a basic TCP chat program and one of the requirements is that it can be run from the command line with the following argument formats:

java Server 8888
java Client localhost 8888

Which will start a server listening on 8888 and which waits to accept incoming connections from clients. Then start a client and connect to the server at localhost:8888. These classes can both be compiled and run from within Eclipse and I have added the above variables to the run configurations for the classes, respectively.

If I navigate to the directory of the files in CMD I can see the compiled .class files, but when I try to run the server with:

java Server 8888

I get the error

Error: Could not find or load main class Server

Eclipse>Window>Preferences>Java>Compiler shows JDK 1.7 .

Running java -version from the command line shows

java version "1.7.0_02"
Java(TM) SE Runtime Environment (build 1.7.0_02-b13)
Java HotSpot(TM) 64-Bit Server VM (build 22.0-b10, mixed mode)

I want to be able to run both the classes from separate prompts in parallel. Any ideas?

java -cp . basicChat.Server 8888

You need to specify the fully qualified class name (including the package name)

Reason:

The class full name (known as fully qualified name) is not Server , it is basicChat.Server . The file is located under a directory named basicChat . So java is looking for aa directory structure matching the package name. The Server.class file is located under the basicChat directory in the file system.

Else consider how we would have a problem to select the intended class if you had several classes called Server in different packages (name spaces).

Are you certain that in both these classes you have main method?

public static void main(String[] args) { ... }

And do your classes have public modifier?

if you have this class in a package eg: test.Server you'll run it from bin folder like that:

java test.Server 8888

Compiling this class:

public class Server {
    public static void main(String[] args) {
        System.out.println(Arrays.deepToString(args));
    }
}

and running:

java Server 8888

gives output:

[8888]

Your CLASSPATH is incorrect. Try the following (on Windows) from bin directory:

java -cp .;%CLASSPATH% basicChat.Server 8888

Also, you can run your Server in Eclipse. Create a run configuration for it, specify a port in arguments. Then you can launch it in Eclipse, it will be running util you stop it or close Eclipse.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM