关于powershell:能够编译java文件,无法运行文件

Able to compile java files, unable to run files

本问题已经有最佳答案,请猛点这里访问。

我正在尝试运行这些程序,但我正在

1
Error:"Could not find or load main class"

下面是我试图运行命令行中的程序的屏幕截图:

Windows PowerShell屏幕截图:

Windows Powershell Screenshot

这对我来说毫无意义,因为文件编译得很好,这意味着可以找到主类。

如果有人能解释出问题所在,我会非常感激的,谢谢。

udpserver代码:

Server Code

udpclient代码:

Client Code


您已经在两个文件的顶部定义了一个package serverClient;

因此,您应该有一个名为serverClient的目录和您的.class文件。

如果您希望使用java命令行执行,那么应该像这样从src目录执行

PS ...\Programming Assignments\src > java serverClient.UDPServer

PS ...\Programming Assignments\src > java serverClient.UDPClient


你是:

  • 在错误的目录中。您应该在包含serverClient的目录中。
  • 使用错误的命令。它们应该是:

    1
    2
    3
    javac serverClient/*.java
    java serverClient.UDPServer
    java serverClient.UDPClient

  • 当运行javac时,您将把路径传递给要编译的文件,因此这些文件隐式地位于类路径上。当运行java时,您不会显式地传递任何文件,因此您必须在类路径中包含当前目录,以便让JVM知道在那里查看。

    1
    2
    $ javac Foo.java
    $ java -cp . Foo

    如果您想在PowerShell中复制它,我经常使用这个bash函数进行快速的jvm/jdk实验。

    在这种情况下,当前的工作目录在默认情况下应该在类路径上大约90%的时间,但它不能适应最后10%的时间。(当然,这是不是一个好的设计决定是有争议的)。


    如果你把你的代码贴在这里会很有用。但是如果我在黑暗中尝试一个镜头,我会说你的文件名与你的Java文件中的类名不匹配。