Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / Java运行系统命令

前面写过一个版本的Java代码用来调用linux shell脚本,原文如下:http://www.linuxidc.com/Linux/2013-05/83739.htm不过没有试过Windows下运行,试了一下,还是不错的,把代码做了一些调整,封装成对象,这样更方便多线程下调用,不用担心静态变量互相干扰的问题。先看一下怎么用:    public static void main(String[] args) {
        try {
            Command command = new Command();
            CommandResult result1 = command.exec("net stop nginx", 20000);
            System.out.println("command executiion succeeds: " + result1.getOutput());
            CommandResult result2 = command.exec("net start nginx", 20000);
            System.out.println("command executiion succeeds: " + result2.getOutput());
        } catch (CommandError ex) {
            System.out.println("command execution failed: " + ex.getMessage());
        }
    }由此可见,有三个类:Command, CommandResult和CommandError。当命令不能运行,将会抛出CommandError异常对象。如果命令能够运行,不管是否成功或者失败,都返回CommandResult对象,里面有两个属性output和error,包含了执行成功的消息和错误消息。CommandError.java代码:package command;/**
 *
 * @author shu6889
 */
public class CommandError extends Exception {    /**
   * Creates a new instance of
   * <code>CommandError</code> without detail message.
   */
    public CommandError() {
    }    /**
   * Constructs an instance of
   * <code>CommandError</code> with the specified detail message.
   *
   * @param msg the detail message.
   */
    public CommandError(String msg) {
        super(msg);
    }
   
    public CommandError(Throwable ex) {
        super(ex);
    }
}CommandResult.java代码package command;
/**
* Describe class CommandResult here.
*
*/
public class CommandResult {
 public static final int EXIT_VALUE_TIMEOUT=-1;
   
    private String output;    void setOutput(String error) {
        output=error;
    }    public String getOutput(){
        return output;
    }    int exitValue;    void setExitValue(int value) {
        exitValue=value;
    }    int getExitValue(){
        return exitValue;
    }    private String error;    /**
   * @return the error
   */
    public String getError() {
        return error;
    }    /**
   * @param error the error to set
   */
    public void setError(String error) {
        this.error = error;
    }
}