我注意到任何来自未经命令行启动的JAR文件的System.out.println()
调用(即用户通过双击启动的Runnable JAR文件)都不会打开控制台。
经过一些研究,我在网站上找到了多个答案:
-
这样做没有问题。但是你希望在哪里看到输出呢?
What happens to “System.out.println()” in executable jar?
如果您以某种未附加控制台的方式运行代码 - 例如Windows上的
javaw
,这是与可执行jar文件关联的默认程序 - 那么输出将不会出现在任何地方。它不会引起任何错误 - 文本只是丢失了。
据我所知,System.out
并不代表控制台。它代表可以由任何需要显示它的内容处理的数据。
我是对的吗?
System.out
到底是什么?- 如何从用户通过双击启动的Runnable JAR文件打开控制台?
java -r runnable.jar
:操作系统运行java
程序,并提供其标准流。java
程序加载jar并设置流,以便在新加载的JVM中为System
读取和输出来自操作系统的流。最终完成工作。 - T.J. Crowder