我正在编写一个基本的TCP聊天程序,其中一个要求是它可以使用以下参数格式从命令行运行:
java Server 8888
java Client localhost 8888它将启动一个监听8888的服务器,并等待接收来自客户端的传入连接。然后启动一个客户机并在localhost:8888连接到服务器。这些类都可以在Eclipse内部编译和运行,我已经分别将上述变量添加到类的run配置中。
如果我导航到CMD中的文件目录,我可以看到已编译的.class文件,但是当我尝试使用以下方法运行服务器时:
java Server 8888我知道错误了
Error: Could not find or load main class ServerEclipse>Window>Preferences>Java>Compiler显示了JDK1.7。
从命令行运行java -version显示
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)我希望能够通过单独的提示并行地运行这两个类。有什么想法吗?
发布于 2012-12-23 20:34:30
java -cp . basicChat.Server 8888您需要指定完全限定的类名(包括包名)
原因:
类全名(称为完全限定名)不是Server,而是basicChat.Server。该文件位于名为basicChat的目录下。因此,java正在寻找一个与包名匹配的目录结构。Server.class文件位于文件系统中的basicChat目录下。
否则,如果在不同的包(名称空间)中有几个名为Server的类,那么如何选择预期的类就会有什么问题。
发布于 2012-12-23 20:33:52
您确定在这两个类中都有main方法吗?
public static void main(String[] args) { ... }您的类有public修饰符吗?
如果包中有这个类,例如:test.Server,您将像这样从bin文件夹中运行它:
java test.Server 8888编写这门课:
public class Server {
public static void main(String[] args) {
System.out.println(Arrays.deepToString(args));
}
}和跑步:
java Server 8888给出输出:
[8888]发布于 2012-12-23 20:30:20
您的CLASSPATH不正确。从bin目录中尝试以下操作(在Windows上):
java -cp .;%CLASSPATH% basicChat.Server 8888此外,您还可以在Eclipse中运行您的服务器。为它创建一个运行配置,在参数中指定一个端口。然后您可以在Eclipse中启动它,它将运行,您可以停止它或关闭Eclipse。
https://stackoverflow.com/questions/14014453
复制相似问题