Java编译器错误:“public type ..必须在自己的文件中定义”?

时间:2010-11-03 03:30:42

标签: java compiler-errors

我正在尝试编译:

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]);
        }
    }
}

我使用了javac dns.java,但是我遇到了一堆错误:

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)

我以前从未编译/完成过Java。我只需要这个来测试我的其他程序结果。有任何想法吗?我正在Linux机器上编译。

5 个答案:

答案 0 :(得分:15)

该文件需要调用DNSLookUp.java,您需要输入:

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

位于文件顶部

答案 1 :(得分:4)

将文件重命名为DNSLookUp.java并导入相应的类。

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]);
        }
    }
}

答案 2 :(得分:4)

这里给出的答案都很好,但鉴于这些错误的性质以及“教人钓鱼等等”的精神:

  1. 安装首选IDE(Netbeans很容易入手)
  2. 将代码设置为新项目
  3. 单击发生错误的行上的灯泡
  4. 选择您想要的修补程序
  5. 惊叹于您可用的工具的强大功能

答案 3 :(得分:0)

您需要导入正在使用的类。 e.g:

import java.net。*;

从java.net包中导入所有类。

您也不能在名为dns.java的文件中使用公共类DNSLookUp。看起来是Java教程的时候......

答案 4 :(得分:0)

来自"The public type <<classname>> must be defined in its own file" error in Eclipse,它被标记为重复。

因此,我在这里回答“重复”: 在Eclipse上,您可以在一个文件中准备所有public class,然后在right-clic -> Refactor -> Move Type to New File中准备。 那不是完全正确的解决方法(这不会让您在编译时在一个文件中包含多个public class),但是当您准备就绪时,这将使您可以将它们移入它们的适当文件中。

来自C#,这对do-forgettable(教程)类是一个令人讨厌的强制性限制,尽管这是一个好习惯。