gpt4 book ai didi

java - 为什么我们不能在静态内部类中定义main函数?

转载 作者:行者123 更新时间:2023-12-01 08:09:37 28 4
gpt4 key购买 nike

我有以下简单的代码

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 上,shell 可能认为 $TesterChild 是一个变量。如果您在提示中尝试一下,如果省略 ''s,您将得到类似的结果:

Error: Could not find or load main class Tester

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

关于java - 为什么我们不能在静态内部类中定义main函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18440951/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com