Spawn类的主要用法和ExpectJ中的spawn方法

时间:2011-04-15 05:18:49

标签: java linux

我仍然无法产生这个过程。我还需要在其他地方做些什么吗?这是我的代码 -

import java.io。*;

import java.util。*;

import expectj。*;

公共课程试用{     public static void main(String [] args){

    ExpectJ exp = new ExpectJ(20);
    String command = "java /root/Interactive_Response/MissionExpectJ/bin Hello";//Hello is the class in which i've written the same details but using sysout and sysin statements.
    Spawn s;
    try {
        s = exp.spawn(command);

        s.expect("Name: ");//enter the name
        s.send("aaaa\n");
        s.expect("password: ");
        s.send("aaa");
        System.out.println("Welcome!");
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

}

在下面的例外中,“Interactive_Response”是我的工作区,“MissionExpectJ”是我的项目。

输出

线程“main”中的异常java.lang.NoClassDefFoundError:/ root / Interactive_Response / MissionExpectJ / bin

java.io.IOException:到达流末尾,未找到匹配项

at expectj.Spawn.expect(Spawn.java:321)

at expectj.Spawn.expect(Spawn.java:142)

at expectj.Spawn.expect(Spawn.java:370)

在Trial.main(Trial.java:14)

以下代码是旧代码..

我正在尝试使用spawn()方法生成一个进程。但我得到了IOException。 “我的代码不完整”,这正是我正在努力做的事情。请告诉我,如果我错了(或者我宁愿说“请让我知道我哪里出错了”)。我正在尝试使用ExpectJ工具成功执行此操作。

import java.io.*;

import expectj.*;

public class Trial {

public static void main(String[] args) throws Exception {

    ExpectJ exp = new ExpectJ(20);
    String command = "echo $PPID";
    System.out.println("The command you entered is " + command);

    Spawn s = exp.spawn(command);//It doesnt display the PPID
    s.expect("Name: ");//Here is where my problem starts.I don't understand what i'm missing here
    s.send("aaaa\n");
    s.expect("password: ");
    s.send("aaa");
    System.out.println("End of session!");
}

}

输出

您输入的命令是echo $ PPID

$ PPID

线程“main”中的异常java.io.IOException:到达流末尾,未找到匹配项

at expectj.Spawn.expect(Spawn.java:321)

at expectj.Spawn.expect(Spawn.java:142)

at expectj.Spawn.expect(Spawn.java:370)

at Trial.main(Trial.java:12)

1 个答案:

答案 0 :(得分:1)

这正是你所期望的:

  • 调出/bin/echo,输出$PPID
  • 然后会抛出一个异常,告诉您匹配失败。

$ PPID是一个shell特殊变量。 /bin/echo对此一无所知,只是将其作为文本输出。在那之后,我不确定您认为自己为什么会从Name获得您正在寻找的输出(password:echo)。