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.java
class的main()
调用成功
我自己找到了答案。
IntelliJ:
我使用 Gradle 作为我的构建工具。在 IntelliJ 中,这似乎不起作用。在我将其更改为 "IntelliJ IDEA" 之后(见屏幕截图),我终于能够 运行 它了。
Bash:
考虑到新的 Java 11 功能,即“launching single-file programs”,似乎无法像这样 运行 内部静态 class。
所以在编译和转义“$”之后,我能够 运行 文件:
$ java Outer$InnerA
感谢 user 提示正确的方向。
我正在使用 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.java
class的main()
调用成功
我自己找到了答案。
IntelliJ:
我使用 Gradle 作为我的构建工具。在 IntelliJ 中,这似乎不起作用。在我将其更改为 "IntelliJ IDEA" 之后(见屏幕截图),我终于能够 运行 它了。
Bash:
考虑到新的 Java 11 功能,即“launching single-file programs”,似乎无法像这样 运行 内部静态 class。
所以在编译和转义“$”之后,我能够 运行 文件:
$ java Outer$InnerA
感谢 user 提示正确的方向。