java - 为什么检索系统信息返回异常空点?

标签 java swing runtime nullpointerexception swingworker

我需要通过 Runtime.getRuntime().exec(cmd); 获取系统信息

我收到以下错误:

java.lang.NullPointerException
    at java.lang.Runtime.exec(Runtime.java:422)
    at java.lang.Runtime.exec(Runtime.java:326)
    at mytest.SystemInfoToTextArea.doInBackground(SystemInfoToTextArea.java:31)
    at mytest.SystemInfoToTextArea.doInBackground(SystemInfoToTextArea.java:16)

欢迎任何建议

类代码

public class SystemInfoToTextArea extends SwingWorker<String, Void> {
private JTextArea textArea;
private String cmd;

public SystemInfoToTextArea(JTextArea textArea, String cmd) {
    textArea = textArea;
    cmd = cmd;
}

@Override
protected String doInBackground() throws Exception {
    String outputMem = null;
    try {
        String lineMem;
        outputMem = "";
        Process procMem = Runtime.getRuntime().exec(cmd);
        BufferedReader input =
                new BufferedReader
                        (new InputStreamReader(procMem.getInputStream()));
        while ((lineMem = input.readLine()) != null) {
            outputMem = (lineMem + "\n");

        }

        input.close();
    } catch (Exception err) {
        err.printStackTrace();
    }
    return outputMem;
}

@Override
protected void done() {
    super.done();
    try {
        textArea.append(get());
    } catch (InterruptedException e) {
        e.printStackTrace();
    } catch (ExecutionException e) {
        e.printStackTrace();
    }

}

public static void main(String... args){
    JFrame frame = new JFrame();
    frame.setSize(700,500);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JPanel panel = new JPanel();
    JTextArea textArea = new JTextArea("System info");

    panel.add(textArea);
    frame.setContentPane(panel);

    frame.setVisible(true);

    SystemInfoToTextArea systemInfoToTextArea = new SystemInfoToTextArea(textArea,"cmd /C dir");
     systemInfoToTextArea.execute();

}
}

最佳答案

您的cmd显然是null,因为您的构造函数代码是错误的。写

this.cmd = cmd;

对于文本区域也是如此。

关于java - 为什么检索系统信息返回异常空点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10450405/

相关文章:

java - 如何从图像文件中读取文本

java - 如何从 Java 应用程序中确定 JVM 最小堆大小?

c# - 将 user.config 拆分为不同的文件以便更快地保存(在运行时)

java - 在最大化屏幕上调整 JFreeChart.ChartPanel 的大小

java - 阻止 JTextArea 扩展

java - Android:如何检查应用程序是否正在运行

java - 从另一个 Maven 项目调用测试类

java - 使用Java在循环内并行执行方法

java - unboundId ldap 限制搜索

java - 当我清楚地用 Java 将它写在它所指的类中时,错误显示方法未定义?