1

我最近有一个类让我从命令行运行 java 程序,我似乎遇到了 cmd 找不到主类的问题

我已经正确安装了 java,java 和 javac 命令提供了各自的菜单。当我按 javac UDPServer.java 时没有问题出现,但是如果我按 java UDPServer,我会收到错误消息。有什么建议么?

import java.io.*; 
import java.net.*; 
import java.util.*;


class UDPServer { 
public static void main(String args[]) throws Exception 
{ 

InetAddress srvIP = InetAddress.getByName("192.168.1.3");

  DatagramSocket serverSocket = new DatagramSocket(5000,srvIP); 

  byte[] receiveData = new byte[64]; byte[] sendData  = new byte[64]; 

  while(true) 
    { 
      DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); 
      serverSocket.receive(receivePacket); 
      String sentence = new String(receivePacket.getData()); 
      InetAddress IPAddress = receivePacket.getAddress();  
      int port = receivePacket.getPort(); 

            Calendar rightNow = Calendar.getInstance();
              sendData = rightNow.getTime().toString().getBytes();

      DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port); 
      serverSocket.send(sendPacket); 
    } 
} 

}

另外,另一个快速的问题:我正在运行一个 Ubuntu VM,我必须在我的主机上运行一个 Server.java 程序,在我的 VM 上运行一个 Client.java。当我尝试配置 IP 地址时。我不知道该放什么,有两个:以太网适配器 Virtual-Box 和以太网适配器本地连接。要连接这两个程序,我应该使用哪个?\

提前致谢

4

3 回答 3

0

您很可能在 java 源代码中指定了包名称。在这种情况下,您需要在运行课程时指定。

于 2013-09-02T16:51:30.793 回答
0

如果没有您的问题的详细信息,很难获得帮助。但是,请检查您尝试运行的主类的名称是否与文件名的名称完全相同。

于 2013-09-02T16:56:44.547 回答
0

我知道这是迟到的回应,可能不再相关。

首先,您无法运行*.java文件,因此您需要将其编译为类文件并以这种方式运行它。
有关如何在控制台中使用 javac 的详细信息,请参阅:javac
为了进一步解释这一点,*.java文件只是一个文本文件,需要编译成 java 机器代码 ( *.class)。最终将整个程序包装在一起,您将导出到一个称为*.jarjava 的存档中*.exe

但是要解决您的代码中的其他一些缺陷:
1. 导入java.io.*,是最有效的方法java.net.*java.util.*
正确的做法是导入所需的包/类,其余的不考虑。
2. 我知道您的班级正在使用 cmd 和 javac 来编写 java 代码,但这没有任何实际意义,除非您正在制作需要使用 javac 进行编译的程序。
有多种编译器和编辑器可供您使用,它们会自动编译并帮助您调试代码,只有少数几个:Eclipse、netbeans 或 blueJ

于 2014-06-26T09:45:43.847 回答