Java compiler error: “public type .. must be defin

2019-01-19 17:21发布

问题:

I am trying to compile this:

public class DNSLookUp {
    public static void main(String[] args)   {
        InetAddress hostAddress;
        try  {
            hostAddress = InetAddress.getByName(args[0]);
            System.out.println (hostAddress.getHostAddress());
        }
        catch (UnknownHostException uhe)  {
            System.err.println("Unknown host: " + args[0]);
        }
    }
}

I used javac dns.java, but I am getting a mess of errors:

dns.java:1: error: The public type DNSLookUp must be defined in its own file
    public class DNSLookUp {
                 ^^^^^^^^^
dns.java:3: error: InetAddress cannot be resolved to a type
    InetAddress hostAddress;
    ^^^^^^^^^^^
dns.java:6: error: InetAddress cannot be resolved
    hostAddress = InetAddress.getByName(args[0]);
                  ^^^^^^^^^^^
dns.java:9: error: UnknownHostException cannot be resolved to a type
    catch (UnknownHostException uhe)  {
           ^^^^^^^^^^^^^^^^^^^^
4 problems (4 errors)

I have never compiled/done Java before. I only need this to test my other programs results. Any ideas? I am compiling on a Linux machine.

回答1:

The file needs to be called DNSLookUp.java and you need to put:

import java.net.InetAddress;
import java.net.UnknownHostException;    

At the top of the file



回答2:

Rename the file as DNSLookUp.java and import appropriate classes.

import java.net.InetAddress;
import java.net.UnknownHostException;

public class DNSLookUp {

    public static void main(String[] args) {
        InetAddress hostAddress;
        try {
            hostAddress = InetAddress.getByName(args[0]);
            System.out.println(hostAddress.getHostAddress());
        } catch (UnknownHostException uhe) {
            System.err.println("Unknown host: " + args[0]);
        }
    }
}


回答3:

The answers given here are all good, but given the nature of these errors and in the spirit of 'teach a man to fish, etc, etc':

  1. Install IDE of choice (Netbeans is an easy one to start with)
  2. Setup your code as a new project
  3. Click the lightbulb on the line where the error occurs
  4. Select the fix you'd like
  5. Marvel at the power of the tools you have available


回答4:

You need to import the classes you're using. e.g.:

import java.net.*;

To import all classes from the java.net package.

You also can't have a public class DNSLookUp in a file named dns.java. Looks like it's time for a Java tutorial...