命令行中的Java程序

时间:2013-09-02 16:47:08

标签: java cmd

我最近有一个让我从命令行运行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地址时。我不知道该放什么,有两个:以太网适配器虚拟盒和以太网适配器局域连接。要连接两个程序,我应该使用哪些程序?\

提前致谢

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

但要解决代码中的其他一些缺陷:
1.导入java.io.*java.net.*java.util.*来实现这一目标 要正确执行此操作,只需导入所需的软件包/类,然后将其余部分保留下来 2.我知道你的类使用cmd和javac来编写java代码,但除了你正在编写需要使用javac编译的程序之外,这没有任何实际意义。
您可以使用各种编译器和编辑器自动编译并帮助您调试代码,只需几个:Eclipse,netbeans或blueJ