BeanShell命令行解释器功能

时间:2015-01-24 12:46:08

标签: java beanshell

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

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

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

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

    String s = new String(" Hello World!"); S; Hello World!。

  3. 例如,这可以在Python中实现。

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

      bsh%which(java.lang.String);
      启动ClassPath映射 映射:目录/用户/ srm //错误://未捕获异常:方法调用cp.getClassSource:at Line:42:in file:/bsh/commands/which.bsh:cp .getClassSource(className)

      从方法调用:其中:at line:8:in file :::which(java .lang .String) 目标异常:java.lang.NullPointerException

      显示java.lang.NullPointerException

    2. 任何指示或帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

  1. 使用jline运行beanshell。
  2. 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问题已修复。但是,然后,使用新课程,你仍然得到:

    $ 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()命令将触发显示值。
    2. bsh % show();
      bsh % String s = new String("Hello World");
      bsh % s;
      <Hello World>
      bsh %
      

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

      1. 对我不起作用
      2. 在我的情况下它并没有失败,但它也没有找到它。

        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 %