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

标签 java executable-jar system.out

假设我从我使用过的代码中创建了一个可执行的jar

System.out.println()

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

编辑 01:

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

EDIT 02:让事情更清晰:

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

最佳答案

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

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

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

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

关于java - 可执行 jar 中的 "System.out.println()"发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28477529/

相关文章:

java - 我如何告诉 visualvm 在哪里可以找到我的源代码?

java groovy提取两个字符串

java - Gradle 自定义插件取决于系统任务

java - Linux系统中java命令的翻译

java - 如何从类加载器加载的 jar 中获取系统输出控制台?

java - 单元测试私有(private)字段

java - 可执行 Jar 的 NoClassDefFoundError

kotlin - Gradle Kotlin DSL Jar.from() 的使用

java - Java 代码中的结果格式不正确

java - Java System.in/out/err 是否始终打开?