2

这里和网络上有很多关于在各种环境中使用 Java 的 System.console() 的问题。它们中的大多数都与获得空返回的限制和警告有关,即“当没有控制台可用时”。很公平。

我的困惑源于即使在 Windows 上的命令行环境中工作时也看到了 null 返回。(注意,这不是关于在 Eclipse 内部做任何事情;这已经被问和回答了一百万次了,我什至没有使用 Eclipse。也不是在谈论双击或右键单击或任何其他类型的单击JAR 文件;当您从 GUI 文件管理器启动时,显然没有控制台。)

到目前为止,我已经在 Windows 7 下尝试了以下组合:

  • 默认 Windows\System32 "java"
  • 默认 Windows\System32 "javaw"
  • Sun/Oracle 的标准 JavaSE JRE 7u25 “java”
  • Sun/Oracle 的标准 JavaSE JRE 7u25 “javaw”
  • Sun/Oracle 的 JavaSE JDK 7u25 “java”
  • Sun/Oracle 的 JavaSE JDK 7u25 “javaw”

  • 以上所有 6 个都在 Cygwin 的薄荷和普通的旧 CMD.EXE 下

我认为 java/javaw 区别的全部意义在于一个有控制台而另一个没有,但即使我从命令行提示符运行所有 12 次尝试, System.console() 始终为空。

测试台代码很简单,并且在其他操作系统下(例如,Linux,其中 System.console() 总是存在于 xterm 之类的,但当 stdin 从 /dev/null 重定向时变为 null)。

当用户从 CLI 运行时,我们必须向 Java 的黑暗之神献祭什么处女山羊才能在 Windows 中获得 System.console()?

4

0 回答 0