Main in static inner class 产生 ClassnotFoundException(尽管 $)

Main in static inner class produces ClassnotFoundException (despite $)

我正在使用 Java 11 和 IntelliJ。请参阅下面的代码段:

public class Outer {
    public static class InnerA {
        public static void main(String[] args) {
            System.out.println("A");
        }
    }

    public static class InnerB {
        public static void main(String[] args) {
            System.out.println("B");
        }
    }
}

这不会导致编译错误,但我不能 运行 它。 运行 它在 IDE 中的结果是 ClassNotFoundException

我尝试使用 bash:

$ java Outer$InnerA.java

产生:

error: can't find main(String[]) method in class: Outer

我尝试重建项目但没有成功。

编辑:

从 java 11 开始,可以在不编译的情况下执行 class (javac)。如果我将 main() 添加到 Outer.java 并在 IDE 中执行它,或者如果我在 bash 中键入以下内容:

java Outer.java

然后Outer.javaclass的main()调用成功

我自己找到了答案。

IntelliJ:

我使用 Gradle 作为我的构建工具。在 IntelliJ 中,这似乎不起作用。在我将其更改为 "IntelliJ IDEA" 之后(见屏幕截图),我终于能够 运行 它了。

Bash:

考虑到新的 Java 11 功能,即“launching single-file programs”,似乎无法像这样 运行 内部静态 class。

所以在编译和转义“$”之后,我能够 运行 文件:

$ java Outer$InnerA

感谢 user 提示正确的方向。