System.out到底是什么?

Fra*_*ani 4 java console jar executable-jar system.out

我注意到,任何System.out.println()未通过命令行启动的JAR文件的调用(即用户双击启动的Runnable JAR文件)都不会打开控制台。

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

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

  • 到底是System.out什么?
  • 如何从用户双击启动的Runnable JAR文件中打开控制台?

T.J*_*der 5

现代操作系统中的进程(就此而言,是几个较旧的操作系统)具有与之关联的三个标准“流”:

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

它们被统称为(和创造性地)标准流

System.inSystem.outSystem.err是默认情况下Java写入这些流的标准机制。

从命令行调用的程序在命令行中的击键转到的环境中运行stdin,二者的输出stdoutstderr在控制台中显示为文本。可以将它们重定向到文件等。

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

我说的“默认”上面,因为你可以使用电话System,其中那些流点变化(他们有创意的名字一样setInsetOutsetErr)。

如何从用户双击启动的Runnable JAR文件中打开控制台?

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

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