我在我的應用程序中使用Beanshell作爲嵌入式調試工具。這意味着我可以遠程登錄到我的應用程序,並在內部運行的同時運行它(我通常用rlwrap包裝telnet會話)。我可以從Java寫入Beanshell控制檯嗎?
的問題是,我發現打印到控制檯的BeanShell,而不是應用本身的標準輸出的唯一辦法,就是內的BeanShell的print()方法。
但我想用Java編寫代碼,我可以從Beanshell調用,它將輸出到Beanshell控制檯 - 即。它會顯示在我的telnet會話中,不會發送到應用程序的stdout,就像您嘗試使用System.out或System.err一樣。
這可能嗎?
編輯:爲了進一步澄清,我正在建立一個BeanShell的服務器如下:
public static void setUpBeanshell() {
try {
i.setShowResults(true);
i.eval(new InputStreamReader(Bsh.class.getResourceAsStream("init.bsh")));
i.eval("server(" + Main.globalConfig.beanShellPort + ");");
} catch (final EvalError e) {
Main.log.error("Error generated while starting BeanShell server", e);
}
}
我將如何修改這個,這樣我可以寫輸出到telnet會話的Java函數(而不是我的應用程序的System.out)
是否可以從有問題的類繼承,添加你想要的功能,並實例者的一個實例上課呢? – 2009-11-25 02:42:18
如何在需要在標準輸出上打印並調用 print(object.dumpInfo())的對象上使用String dumpInfo()方法?或者你想讓它更像一個記錄器? – 2009-11-25 13:53:04
如果您需要更多記錄器,您需要在單獨構建的特定控制檯類上實例化解釋器,然後對象可以使用console.print()寫入該控制檯 - http://www.beanshell.org/ javadoc/bsh/ConsoleInterface.html#print(java.lang.String) – 2009-11-25 13:57:10