【问题标题】:Calling WMIC.EXE from Java (hangs)从 Java 调用 WMIC.EXE(挂起)
【发布时间】:2016-02-22 03:07:38
【问题描述】:

我正在尝试从 Java 调用 WMIC.EXE 以获取电池信息。

这里是 JavaX(一种扩展的 Java 方言)中的源代码:http://tinybrain.de/1001824

要查看等效的 Java 源代码,请查看 here(只有前 60 行很重要,真的)。

您可以使用 x30.jar 运行此程序 - 或者只需编译并运行 Java source

基本上它只是产生一个进程(通过一个 .bat 文件)并获得它的输出。 “反引号”功能适用于其他一切,包括 Windows 上的东西。只是不使用 WMIC - 一切都挂起。

运行的命令是这样的:

WMIC Path Win32_Battery Get EstimatedChargeRemaining /Format:List

在命令提示符下运行它可以正常工作...只是在 Java 中不行。 Java 的子进程很奇怪,真的。

有什么想法吗?谢谢...

【问题讨论】:

    标签: java windows subprocess


    【解决方案1】:

    我相信这是 https://stackoverflow.com/a/13367685/3196753 的副本。

    引用:

    在获取和使用您的InputStream 之前,您需要获取并关闭您的OutputStream。这将向进程确认您已开始向进程发送输入(在本例中为无输入)。

    p.getOutputStream().close();
    

    请记住,在Process 对象上,getInputStream() 输入来自进程的输出流,getOutputStream() 输出进入进程的输入流。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-05
      • 1970-01-01
      • 1970-01-01
      • 2019-05-30
      • 2021-07-07
      • 2013-07-19
      • 1970-01-01
      相关资源
      最近更新 更多