System.out到底是什么?

2023-11-25

我注意到任何电话System.out.println()来自尚未通过命令行启动的 JAR 文件(即由用户双击启动的可运行 JAR 文件)将不会打开控制台。

经过一番研究,我在网站上找到了多个答案:

  • jar 中的 System.out.println

    这样做是没有问题的。但是您希望在哪里看到输出?

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

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

据我了解,System.out不代表控制台。它确实代表了任何需要显示它的东西都可以处理的数据。 我对吗?

  • What is System.out确切地?
  • 如何从用户双击启动的可运行 JAR 文件打开控制台?

现代操作系统(以及几个较旧的操作系统)中的进程获得三个与其关联的标准“流”:

  • 标准:基于流的输入(stdin)
  • 标准输出:基于流的输出(stdout)
  • 标准错误:基于流的错误输出(stderr)

他们统称为(创造性地)标准流.

System.in, System.out, and System.err默认情况下,Java 的标准机制用于写入这些流。

从命令行调用的程序在命令行中的击键进入的环境中运行stdin,以及两者的输出stdout and stderr在控制台中显示为文本。它们可以重定向到文件等。

通过 GUI 启动的程序通常不会将这些流连接到您可以看到的任何内容。

我在上面说“默认”是因为您可以使用以下呼叫System改变这些流指向的位置(它们有创意的名字,比如setIn, setOut, and setErr.)

如何从用户双击启动的可运行 JAR 文件打开控制台?

这里有一个错误的关联:jar 可运行这一事实并不是您看不到流的原因。如果您在命令行运行可运行的 jar,您将看到其标准输出。

如果您在不与某种控制台关联的情况下运行它,是否可以看到该输出将取决于您运行它的方式以及可能的编写方式。许多 GUI 框架会将标准输出和错误重定向到日志文件。或者应用程序可能会提供这样做的调试选项。那里没有一个标准答案(没有双关语)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

System.out到底是什么? 的相关文章

随机推荐