Java 执行;system.exe“&引用-获得t";
请帮助我,我使用了以下java代码:Java 执行;system.exe“&引用-获得t";,java,windows,command,Java,Windows,Command,请帮助我,我使用了以下java代码: public class ClientApplication { public static void main(String[] args) { String[] commands = new String[] {"system.exe","-get t"}; try{ Runtime rt = Runtime.getRuntime(); Pro
public class ClientApplication {
public static void main(String[] args) {
String[] commands = new String[] {"system.exe","-get t"};
try{
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec(commands);
BufferedReader stdInput = new BufferedReader(new
InputStreamReader(proc.getInputStream()));
BufferedReader stdError = new BufferedReader(new
InputStreamReader(proc.getErrorStream()));
System.out.println("Here is the standard output of the command:\n");
String s = null;
while ((s = stdInput.readLine()) != null) {
System.out.println(s);
}
System.out.println("Here is the standard error of the command (if any):\n");
while ((s = stdError.readLine()) != null) {
System.out.println(s);
}
} catch (Exception e) {e.setStackTrace(null);}}}
要获取有关系统但检测到异常的信息,请执行以下操作:
线程“main”java.lang.NullPointerException中出现异常
请帮我在windows设备上执行命令。我不是windows专家,但我的理解是“system.exe”不是windows命令。因此,尝试将其用作这样的命令是行不通的 这并不能解释NPE,但我不相信你给我们的关于NPE发生地点的信息是准确的。但是我可以告诉你,在下面的代码中,NPE不能被抛出到这一行的唯一方法是:
String[] commands = new String[] {"system.exe","-get t"};
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec(commands); // THIS LINE
rt
的值不能是null
,命令
变量不是null
,数组不包含任何null
值
简而言之,NPE发生在不同的行,或者您正在运行的代码与您向我们展示的代码不同
不幸的是(从你的角度来看),我没有一台Windows机器可以用来试验你的代码
最后,这是完全错误的:
} catch (Exception e) {e.setStackTrace(null);}}}
而且。。。现在我想到了try块中的内容。。。这可能是投掷NPE的真实地点!setStackTrace
的javadoc说明:
抛出:NullPointerException
-如果stackTrace
为null
或者stackTrace
的任何元素为null
哦,无论如何,在那里设置跟踪是没有意义的。您试图实现什么?我在windows 7中搜索如何执行命令引发异常的原因是什么?在进程proc=rt.exec(命令)中;lineYou说
NullPointerException
是从processproc=rt.exec(命令)抛出的代码>。现在你是说不是。所以我再问一次——异常是从哪里抛出的?老兄,一个命令不能为null。变量或对象可以为null。我猜变量proc
是空的?