可执行jar中的"System.out.println()"会发生什么?

Min*_*mud 10 java executable-jar system.out

假设我已经使用executable jar过的代码创建了一个代码

System.out.println()
Run Code Online (Sandbox Code Playgroud)

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

编辑01:

注意:情况是我不使用控制台运行jar或无论如何将任何控制台与它关联.

编辑02:让事情更清晰:

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

Jon*_*eet 7

在可执行jar文件中运行代码没什么特别之处.如果从控制台运行它,例如java -jar foo.jar输出仍然会进入控制台.

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

请注意,在这种情况下,如果你使用的System.console()不是,将返回null.所以:

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

  • @minarmahmud:好吧不要*忽略* - 我怀疑你是否使用`printf`并且有一些无效的格式字符串,例如会失败.但输出不会随处可见. (2认同)