首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从命令行运行Eclipse编译的Java类?

如何从命令行运行Eclipse编译的Java类?
EN

Stack Overflow用户
提问于 2012-12-23 20:26:15
回答 3查看 2.1K关注 0票数 0

我正在编写一个基本的TCP聊天程序,其中一个要求是它可以使用以下参数格式从命令行运行:

代码语言:javascript
复制
java Server 8888
java Client localhost 8888

它将启动一个监听8888的服务器,并等待接收来自客户端的传入连接。然后启动一个客户机并在localhost:8888连接到服务器。这些类都可以在Eclipse内部编译和运行,我已经分别将上述变量添加到类的run配置中。

如果我导航到CMD中的文件目录,我可以看到已编译的.class文件,但是当我尝试使用以下方法运行服务器时:

代码语言:javascript
复制
java Server 8888

我知道错误了

代码语言:javascript
复制
Error: Could not find or load main class Server

Eclipse>Window>Preferences>Java>Compiler显示了JDK1.7

从命令行运行java -version显示

代码语言:javascript
复制
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)

我希望能够通过单独的提示并行地运行这两个类。有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-12-23 20:34:30

代码语言:javascript
复制
java -cp . basicChat.Server 8888

您需要指定完全限定的类名(包括包名)

原因:

类全名(称为完全限定名)不是Server,而是basicChat.Server。该文件位于名为basicChat的目录下。因此,java正在寻找一个与包名匹配的目录结构。Server.class文件位于文件系统中的basicChat目录下。

否则,如果在不同的包(名称空间)中有几个名为Server的类,那么如何选择预期的类就会有什么问题。

票数 3
EN

Stack Overflow用户

发布于 2012-12-23 20:33:52

您确定在这两个类中都有main方法吗?

代码语言:javascript
复制
public static void main(String[] args) { ... }

您的类有public修饰符吗?

如果包中有这个类,例如:test.Server,您将像这样从bin文件夹中运行它:

代码语言:javascript
复制
java test.Server 8888

编写这门课:

代码语言:javascript
复制
public class Server {
    public static void main(String[] args) {
        System.out.println(Arrays.deepToString(args));
    }
}

和跑步:

代码语言:javascript
复制
java Server 8888

给出输出:

代码语言:javascript
复制
[8888]
票数 1
EN

Stack Overflow用户

发布于 2012-12-23 20:30:20

您的CLASSPATH不正确。从bin目录中尝试以下操作(在Windows上):

代码语言:javascript
复制
java -cp .;%CLASSPATH% basicChat.Server 8888

此外,您还可以在Eclipse中运行您的服务器。为它创建一个运行配置,在参数中指定一个端口。然后您可以在Eclipse中启动它,它将运行,您可以停止它或关闭Eclipse。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14014453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档