我注意到任何电话System.out.println()
来自尚未通过命令行启动的 JAR 文件(即由用户双击启动的可运行 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(使用前将#替换为@)