本问题已经有最佳答案,请猛点这里访问。
我正在尝试运行这些程序,但我正在
Error:"Could not find or load main class"
下面是我试图运行命令行中的程序的屏幕截图:
Windows PowerShell屏幕截图:
这对我来说毫无意义,因为文件编译得很好,这意味着可以找到主类。
如果有人能解释出问题所在,我会非常感激的,谢谢。
udpserver代码:
udpclient代码:
成功的编译并不一定意味着代码中存在主类。
1)在这里发布之前,至少对错误消息进行基本搜索。我在3秒内找到了我链接的副本。2)不要发布代码的图像。图片中的代码是无用的;查看这个meta-post可以获得避免这样做的许多原因的列表。
不要在这里张贴文本图片。张贴课文。
您已经在两个文件的顶部定义了一个package serverClient;。
因此,您应该有一个名为serverClient的目录和您的.class文件。
如果您希望使用java命令行执行,那么应该像这样从src目录执行
PS ...\Programming Assignments\src > java serverClient.UDPServer
PS ...\Programming Assignments\src > java serverClient.UDPClient
你是:
在错误的目录中。您应该在包含serverClient的目录中。
使用错误的命令。它们应该是:
javac serverClient/*.java
java serverClient.UDPServer
java serverClient.UDPClient
当运行javac时,您将把路径传递给要编译的文件,因此这些文件隐式地位于类路径上。当运行java时,您不会显式地传递任何文件,因此您必须在类路径中包含当前目录,以便让JVM知道在那里查看。
$ javac Foo.java
$ java -cp . Foo
如果您想在PowerShell中复制它,我经常使用这个bash函数进行快速的jvm/jdk实验。
在这种情况下,当前的工作目录在默认情况下应该在类路径上大约90%的时间,但它不能适应最后10%的时间。(当然,这是不是一个好的设计决定是有争议的)。
如果你把你的代码贴在这里会很有用。但是如果我在黑暗中尝试一个镜头,我会说你的文件名与你的Java文件中的类名不匹配。