"System.out.println()" 在可执行 jar 中会发生什么?
What happens to "System.out.println()" in executable jar?
假设我从我使用
的代码创建了一个 executable jar
System.out.println()
当我们运行可执行jar时,没有控制台。那么,这条线会发生什么? java
如何处理这种情况?
编辑 01:
注意:情况是当我不使用控制台来 运行 jar
也没有将任何控制台与其相关联时。
编辑 02:让事情更清楚:
我知道任何地方都不会打印任何东西,因为没有控制台..!我想知道 java
在这种情况下如何处理这一行?为可执行 jar 生成字节码时是否省略了这一行?或者当没有控制台时,这条线是否被忽略了?或者任何...
我从控制台打开它 (java -jar YourJar.jar),文本会打印在您的控制台中 window。
如果您在资源管理器(或类似工具)中打开它,您将看不到文本
澄清您的第二次编辑:
字节码并没有被省略,因为编译器无法知道 jar 将在什么上下文中执行。始终可以从控制台调用 jar,在这种情况下,println 必须留在那里。
其实很多jar文件要不然就完全没用了。有很多 Java 程序通过控制台输入和输出与用户交互。
不需要 java-程序有 GUI(或 运行 完全在后台)。
可执行 jar 文件中的 运行ning 代码没有什么特别之处。如果你从控制台 运行 它,例如使用 java -jar foo.jar
输出仍将转到控制台。
如果您 运行 代码以某种方式不附加控制台 - 例如 Windows 上的 javaw
,这是与可执行 jar 文件关联的默认程序 -那么输出将不会去任何地方。它不会导致任何错误 - 文本只会丢失。
请注意,在那种情况下,如果您使用 System.console()
,that 将 return null
。所以:
System.out.printf("Foo%n"); // No problem. Goes nowhere.
System.console().printf("Foo%n"); // Would throw a NullPointerException.
只要您不从控制台 运行 您的应用程序 window (java -jar executable.jar
),就会省略输出。此外,您可以配置 Java 安装,以便在启动 Java 应用程序后立即启动控制台 windows。然后输出将写入 JVM 的控制台 window。您可以在官方 Java 网站上找到一篇文章 How do I enable and view the Java Console?。
假设我从我使用
的代码创建了一个executable jar
System.out.println()
当我们运行可执行jar时,没有控制台。那么,这条线会发生什么? java
如何处理这种情况?
编辑 01:
注意:情况是当我不使用控制台来 运行 jar
也没有将任何控制台与其相关联时。
编辑 02:让事情更清楚:
我知道任何地方都不会打印任何东西,因为没有控制台..!我想知道 java
在这种情况下如何处理这一行?为可执行 jar 生成字节码时是否省略了这一行?或者当没有控制台时,这条线是否被忽略了?或者任何...
我从控制台打开它 (java -jar YourJar.jar),文本会打印在您的控制台中 window。
如果您在资源管理器(或类似工具)中打开它,您将看不到文本
澄清您的第二次编辑: 字节码并没有被省略,因为编译器无法知道 jar 将在什么上下文中执行。始终可以从控制台调用 jar,在这种情况下,println 必须留在那里。
其实很多jar文件要不然就完全没用了。有很多 Java 程序通过控制台输入和输出与用户交互。 不需要 java-程序有 GUI(或 运行 完全在后台)。
可执行 jar 文件中的 运行ning 代码没有什么特别之处。如果你从控制台 运行 它,例如使用 java -jar foo.jar
输出仍将转到控制台。
如果您 运行 代码以某种方式不附加控制台 - 例如 Windows 上的 javaw
,这是与可执行 jar 文件关联的默认程序 -那么输出将不会去任何地方。它不会导致任何错误 - 文本只会丢失。
请注意,在那种情况下,如果您使用 System.console()
,that 将 return null
。所以:
System.out.printf("Foo%n"); // No problem. Goes nowhere.
System.console().printf("Foo%n"); // Would throw a NullPointerException.
只要您不从控制台 运行 您的应用程序 window (java -jar executable.jar
),就会省略输出。此外,您可以配置 Java 安装,以便在启动 Java 应用程序后立即启动控制台 windows。然后输出将写入 JVM 的控制台 window。您可以在官方 Java 网站上找到一篇文章 How do I enable and view the Java Console?。