可执行 jar 中的 “System.out.println()” 会发生什么情况?

2022-09-03 14:55:45

假设我从我使用的代码创建了一个executable jar

System.out.println()

当我们运行可执行jar时,没有控制台。那么,这条线会发生什么呢?如何处理这种情况?java

编辑01

注意:这种情况是当我不使用控制台来运行,也不以任何方式将任何控制台与它关联时。jar

编辑02:让事情更清楚:

我知道没有控制台,所以任何地方都不会打印任何东西..!我想知道在这种情况下如何处理这条线?在为可执行 jar 生成字节码时是否省略了此行?还是在没有控制台时,这条线只是被忽视了?或者其他什么...java


答案 1

在可执行 jar 文件中运行代码没有什么特别之处。如果您从控制台运行它,例如,输出仍将转到控制台。java -jar foo.jar

如果您以某种不附加控制台的方式运行代码 - 例如在Windows上,这是与可执行jar文件关联的默认程序 - 那么输出将不会转到任何地方。它不会导致任何错误 - 文本只会丢失。javaw

请注意,在这种情况下,如果您改用,返回 。所以:System.console()null

System.out.printf("Foo%n"); // No problem. Goes nowhere.
System.console().printf("Foo%n"); // Would throw a NullPointerException.

答案 2

只要您不从控制台窗口运行应用程序,就会省略输出 ()。此外,您可以配置 Java 安装,以便在启动 Java 应用程序后立即启动控制台窗口。然后,输出将写入 JVM 的控制台窗口。您可以在官方 Java 网站上找到一篇文章如何启用和查看 Java 控制台?java -jar executable.jar

Activate Java console


推荐