无法在Windows 2012 R2服务器上的java上执行C可执行文件

时间:2015-02-16 16:35:11

标签: java windows windows-server-2012-r2

这可能是java或Windows 2012 R2服务器错误。如果您知道任何此类错误,请告诉我,或者如果可能的话,请提供此行为的解释。

我有一个C可执行文件说abc.exe C可执行文件可以使用多个参数,如filesystems,cpuusage,diskactivity。

如果作为独立的可执行文件执行,我可以获得如下的正确输出。

C:\>abc.exe filesystems

C:\|153590.18|42409.92

C:\>abc.exe cpuusage

0|66695468750|61397343750|2614375000|12005347187500
1|97592187500|67641250000|4430312500|11968204687500

C:\>abc.exe diskactivity

C:|4022841134000|130685650573674324|74051|1057397|20791424524|1131448|3579545|58083987000|7029363712|18017484800|6

但如果我在java程序的帮助下运行可执行文件,如下所示,我只能获得文件系统和cpuusage的正确输出。但它没有返回磁盘活动的输出。

for filesystems

C:\>java RuntimeCheck

C:\|153590.18|42409.92

完成。

for cpuusage

C:\>java RuntimeCheck

0|66695468750|61397343750|2614375000|12005347187500
1|97592187500|67641250000|4430312500|11968204687500

完成。

但是对于磁盘活动

C:\>java RuntimeCheck

完成。

下面还给出了java程序。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class RuntimeCheck {
      public static void main(String args[]) {
        try {
          String line;
          Process p = Runtime.getRuntime().exec("cmd /c C:\\nmupm.exe diskactivity");//have changed arguments as per requirements
          BufferedReader bri = new BufferedReader
            (new InputStreamReader(p.getInputStream()));
          BufferedReader bre = new BufferedReader
            (new InputStreamReader(p.getErrorStream()));
          while ((line = bri.readLine()) != null) {
            System.out.println(line);
          }
          bri.close();
          while ((line = bre.readLine()) != null) {
            System.out.println(line);
          }
          bre.close();
          p.waitFor();
          System.out.println("Done.");
        }
        catch (Exception err) {
          err.printStackTrace();
        }
      }
    }

基本上,java程序要么无法从标准中读取,要么正在发生其他事情。此行为仅适用于Windows 2012 R2服务器版本。

您能否提供有关调试的建议?

先谢谢。

0 个答案:

没有答案