BeanShell 命令行解释器特性

BeanShell command line interpreter features

我正在尝试测试 BeanShell 的命令行解释器如何在我的机器上处理基本 Java 命令和语法,看看我是否可以以任何方式自定义其行为。我已经在我的机器上安装了 2.0b4 版 运行 OS X 10.10.1(JAR 文件在 /Library/Java/Extensions 中,按照说明)。

它是最接近我一直在寻找的东西,一个交互式 Java 解释器,但它没有一些好的解释器应该具备的标准功能。

  1. 我希望能够使用向上箭头键重复使用以前的命令,但目前它无法识别它,它只显示一个控制序列。有没有办法为 BeanShell 自定义它?

  2. 有没有办法让 BeanShell 打印出变量的值,如果我事先创建了它,只需命名它,比如

    字符串 s = 新字符串("Hello World!"); ; 世界,您好!

例如,这在 Python 中是可能的。

  1. 根据有关导入的文档 Java classes which(<java class>); 应该 return 指定 class 的路径位置=54=] class。但是 which( java.lang.String ); 对我不起作用,我得到 NullPointerException:

    bsh % which(java.lang.String);
    启动类路径映射 映射:目录 /Users/srm // 错误: // 未捕获的异常:方法调用 cp.getClassSource:在第 42 行:在文件中:/bsh/commands/which.bsh:cp .getClassSource (className)

    从方法调用:which:在第 8 行:在文件::which (java.lang.String) 目标异常:java.lang.NullPointerException

    java.lang.NullPointerException

如有任何指点或帮助,我们将不胜感激。

  1. 运行 带有 jline 的 beanshell。

http://jline.sourceforge.net/index.html 下载 jline jar 然后你可以做:

java -cp jline-1.0.jar:bsh-2.0b4.jar jline.ConsoleRunner bsh.Interpreter

jline 将提供行编辑功能。我发现了这个提示 here.

存在问题 运行 jline2。首先,您将获得:

 $ java -cp jline-2.12.jar:bsh-2.0b4.jar jline.ConsoleRunner bsh.Interpreter
 Exception in thread "main" java.lang.NoClassDefFoundError: jline/ConsoleRunner

由于 this 问题已解决。但是,使用新的 class 你仍然会得到:

$ java -cp jline-2.12.jar:bsh-2.0b4.jar jline.console.internal.ConsoleRunner bsh.Interpreter
Exception in thread "main" java.lang.IllegalArgumentException: wrong number of arguments

由于 this 问题尚未解决。

  1. 使用 show() 命令触发显示值。
bsh % show();
bsh % String s = new String("Hello World");
bsh % s;
<Hello World>
bsh %

它在文档的 Useful BeanShell Commands 部分中提到。

  1. 也不适合我

我的情况没有失败,但也没有找到。

bsh % which(java.lang.String);
Start ClassPath Mapping
Mapping: Archive: file:/Users/me/beanshell/jline-1.0.jar
Mapping: Archive: file:/Users/me/beanshell/bsh-2.0b4.jar
Mapping: Archive: file:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/classes.jar
End ClassPath Mapping
null
bsh %