我有以下简单的代码
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.class
和Tester$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