我正在使用beanshell bsh-2.0b4.jar文件。我已經建立了路徑並在java程序中使用它。我設法從控制檯獲取打印語句。但是,如果正在返回一個值,如何獲得返回值。評估beanshell中的代碼字符串並獲取beanhell解釋器返回的值
import java.io.*;
import bsh.Interpreter;
import bsh.EvalError;
public class CaptureDis {
/**
* @param args
*/
public static void main(String[] args) {
Interpreter i = new Interpreter();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream ps2 = System.out;
try {
//i.eval(System.out.println("System.out.println(\"test\");"));
i.eval("int x=2; int y=3; int res=x+y; return res");
i.getOut();
} catch (EvalError e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String out = baos.toString();
System.setOut(ps2);
System.out.println(out);
}
}
謝謝,它的工作原理。 – user3371303
使用BeanShell解釋器,可以解釋for循環? 我試圖這樣: srcCode載:「HashSet的HS =新的HashSet(); INT I = 0;對於 (I = 0; I <10; I = I + 2){ \t hs.add(ⅰ ); \t}「 and bsh.set(」hs「,hs); bsh.eval(「import java.lang.String;」); bsh.eval(srcCode); 但它給我錯誤「第2行第11列,遇到EOF」 – user3371303