假设我已从使用了以下代码的项目中创建了一个可执行JAR
:
System.out.println()
当我们运行可执行的jar文件时,没有控制台。那么这行代码会发生什么?java
如何处理这种情况?(注意:本人并未使用控制台运行jar
文件或以任何方式关联任何控制台。)我知道由于没有控制台,不会在任何地方打印内容。但是我想知道java
如何在这种情况下处理这一行代码?这一行代码是否在生成可执行jar文件的字节码时被省略了?还是当没有控制台时忽略这行代码?或者其他情况...假设我已从使用了以下代码的项目中创建了一个可执行JAR
:
System.out.println()
当我们运行可执行的jar文件时,没有控制台。那么这行代码会发生什么?java
如何处理这种情况?(注意:本人并未使用控制台运行jar
文件或以任何方式关联任何控制台。)我知道由于没有控制台,不会在任何地方打印内容。但是我想知道java
如何在这种情况下处理这一行代码?这一行代码是否在生成可执行jar文件的字节码时被省略了?还是当没有控制台时忽略这行代码?或者其他情况...在可执行的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.
println()
方法是这样编写的,即如果没有控制台,则调用将被忽略? - Minar Mahmudprintf
并且有一些无效的格式字符串,那么它会失败。但输出不会流向任何地方。 - Jon Skeetjava -jar executable.jar
)运行应用程序,输出就会被省略。此外,您可以配置Java安装,使控制台窗口在启动Java应用程序时立即启动。然后,输出将写入JVM的控制台窗口。您可以在官方Java网站上找到一篇文章《如何启用和查看Java控制台?》。
java -jar foo.jar
,那么就会有... - Jon Skeet