我有以下简单的代码

public class Tester {
    static class TesterChild {
        public static void main(String args[]) {
            System.out.println("Test");
        }
    }
}


它编译良好。但是当我运行它时,出现以下错误

[aniket@localhost src]$ java Tester
Error: Could not find or load main class Tester


问题是为什么我们不能在静态内部类中定义我们的main方法?

更新1:

如答案/评论中所指定,我已将代码更改为以下代码

public class Tester {
    public static class TesterChild {
        public static void main(String args[]) {
            System.out.println("Test");
        }
    }
}


我对其进行了编译,并制作了两个类文件Tester.classTester$TesterChild.class。但是我仍然出错

[aniket@localhost Desktop]$ java Tester$TesterChild
Error: Could not find or load main class Test


更新2:

好的,现在我将当前目录包含在类路径中,并且执行时仍然出现错误

[aniket@localhost Desktop]$ java -cp . Tester$TesterChild
Error: Main method not found in class Tester, please define the main method as:
   public static void main(String[] args

最佳答案

它可以作为main运行,但是您没有使用正确的类。您的主要课程不是Tester,而是Tester.TesterChild

在Eclipse中,它无需任何设置即可运行,但是您必须从命令行使用java 'yourpackage.Tester$TesterChild'语法,如上文所述。

您需要将类的名称包装在''中,因为在linux / unix上,外壳程序可能认为$TesterChild是变量。如果您在提示中尝试一下,则省略''会得到类似以下内容:


  错误:找不到或加载主类测试器


如果需要显式设置类路径,则可以使用-cp-classpath选项,也可以从命令行进行设置:set CLASSPATH=/somedir

07-24 09:33