理解public static void main(String [] args)

时间:2012-10-17 23:22:27

标签: java

我是一名试图学习Java的PHP / Mysql程序员,我一直坚持如何使用它来编译文件:

public static void main(String[] args)

以下是示例代码:

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

public class GreetingClient
{
public static void main(String [] args)
{
  String serverName = args[0];
  int port = Integer.parseInt(args[1]);
  try
  {
     System.out.println("Connecting to " + serverName
                         + " on port " + port);
     Socket client = new Socket(serverName, port);
     System.out.println("Just connected to "
                  + client.getRemoteSocketAddress());
     OutputStream outToServer = client.getOutputStream();
     DataOutputStream out =
                   new DataOutputStream(outToServer);

     out.writeUTF("Hello from "
                  + client.getLocalSocketAddress());
     InputStream inFromServer = client.getInputStream();
     DataInputStream in =
                    new DataInputStream(inFromServer);
     System.out.println("Server says " + in.readUTF());
     client.close();
  }catch(IOException e)
  {
     e.printStackTrace();
  }
}
}

运行时尝试在Windows命令提示符下使用javac命令将此文件从.java文件编译为要在网页中调用的.class文件,我收到错误消息:

bad class file: .\String.java
file does not contain class String
Please remove or make sure it appears in the correct subdirectory of the classpath.

public static void main(String[] args) {

如果编译一个像这样的.java文件:

import java.applet.Applet;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Properties;
public class applet_test extends Applet {
private InetAddress addr = null;
public void init() {
    try {
        addr = InetAddress.getLocalHost();
    }
    catch (UnknownHostException e) {
        System.exit(0);
    }
}
public InetAddress getLHost() {
    return addr;
}

}

我没有错误,.java文件编译成.class文件,我可以在网页中使用.class文件。

不确定我做错了什么。

谢谢你们!


好的,现在,当我运行此命令时:

C:\ > javac GreetingClient.java

我明白了:

GreetingClient.java:9: cannot find symbol
symbol  : method parseInt(GreetingClient)
location: class java.lang.Integer
  int port = Integer.parseInt(args[1]);
                    ^
GreetingClient.java:14: cannot find symbol
symbol  : constructor Socket(GreetingClient,int)
location: class java.net.Socket
     Socket client = new Socket(serverName, port);
                     ^
2 errors

同样,我在使用此行的文件上运行javac命令时似乎只会出错:

 public static void main(String[] args)

我知道我错过了什么,任何帮助都会受到赞赏。

2 个答案:

答案 0 :(得分:5)

由于您的文件包含class GreetingClient,因此必须将其命名为GreetingClient.java。 Java要求文件名与其中定义的类的名称匹配。

答案 1 :(得分:0)

在Java中,您的主类必须包含public static void main(String[] args)才能对其进行初始化。 如果你有多个班级,另一个班级只有class Class_Name {},而且正如Greg Hewgill所说:你的Java文件必须被命名为你的主要班级名称