Java编译器错误:“公共类型..必须在其自己的文件中定义”?

Java编译器错误:“公共类型..必须在其自己的文件中定义”?,java,compiler-errors,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(

我正在尝试编译以下内容:

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机器上编译

该文件需要命名为DNSLookUp.java,您需要放置:

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

在文件顶部,您需要导入正在使用的类。e、 g:

导入java.net。*

从java.net包导入所有类

在名为dns.java的文件中也不能有公共类DNSLookUp。看起来是时候学习Java教程了……

将文件重命名为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]);
        }
    }
}

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

选择Netbeans安装IDE是一个简单的开始 将代码设置为新项目 单击发生错误的线路上的灯泡 选择您想要的修复 惊叹于你现有工具的威力 来自被标记为重复的

因此,我在这里回答这个问题: 在Eclipse上,您可以在一个文件中准备所有公共类,然后右键clic->Refactor->Move Type到新文件。 这并不完全是正确的解决方法这不会让您在编译时在一个文件中有多个公共类,但这会让您在准备就绪时在适当的文件中移动它们


来自C语言,这是一个恼人的强制限制,对于那些忘记做的教程类来说,这是一个好习惯。

4不是一堆错误。400可能是,但不是4。请尽量保持问题的独立性,我们不想在互联网上到处寻找你的代码,同时试图帮助你:-对不起!我仍然需要弄清楚如何格式化,所以,谢谢你的编辑!作为将来的参考,行前4个空格将对其进行同样的格式化,您可以使用反勾号进行相同的内联格式化。解释得很好,谢谢!我要读一读=谢谢这就更有意义了~如果有人想知道,需要重命名该文件,因为文件名需要与类名匹配。如果我愚蠢到错过了这一点,因此错过了我问题的解决方案,也许其他人也是。IntelliJ有一个社区版@贾扬-是的,当谈到丰富的IDE时,我们被宠坏了。我只对Netbeans和Eclipse有经验,虽然它们都很棒,但我认为对于那些新接触这种语言的人来说,Netbeans的学习曲线会更浅。我喜欢IntelliJ,但不喜欢商业版。社区版中没有很多重要的东西。我想OP会在谷歌看到这个答案后立即选择JavaIDE,所以在评论中讨论它可能是无关紧要的。