`

Java动态执行代码Bsh

    博客分类:
  • Java
 
阅读更多

 

首先要到http://www.beanshell.org/download.html去下载个BeanShell的一个包,如bsh-2.0b4.jar ,然后在ClassPath中将它的地址加上.

package test;

import java.util.Date;
import bsh.EvalError;
import bsh.Interpreter;

public class Test {
 public static void main(String[] args) {
  Interpreter interpreter = new Interpreter();
  String s = "2>3||3>4&&5<4";
  try {
   interpreter.set("boolean", interpreter.eval("(" + s +")"));
   System.out.println(interpreter.get("boolean"));
  } catch (EvalError e) {
   e.printStackTrace();
  }
 }
}

 

从你的应用程序调用BeanShell

 

通过建立一个BeanShell解释器,使用eval()或source()命令,你可以在你的应用程序中求文本表达式的值和运行脚本。如果你希望在你的脚本内部使用一个对象,可以用set()方法传递对象的变量参数给BeanShell,并通过get()方法取得结果。

   

 import bsh.Interpreter;
    Interpreter i = new Interpreter();  // Construct an interpreter
    i.set("foo", 5);                    // Set variables
    i.set("date", new Date() );
    Date date = (Date)i.get("date");    // retrieve a variable
    // Eval a statement and get the result
    i.eval("bar = foo*10");            
    System.out.println( i.get("bar") );
    // Source an external script file
    i.source("somefile.bsh"); 

 

如官方的例子

         Here are some examples:

 

                Interpeter bsh = new Interpreter();

                // Evaluate statements and expressions
                bsh.eval("foo=Math.sin(0.5)");
                bsh.eval("bar=foo*5; bar=Math.cos(bar);");
                bsh.eval("for(i=0; i<10; i++) { print(\"hello\"); }");
                // same as above using java syntax and apis only
                bsh.eval("for(int i=0; i<10; i++) { System.out.println(\"hello\"); }");

                // Source from files or streams
                bsh.source("myscript.bsh");  // or bsh.eval("source(\"myscript.bsh\")");

                // Use set() and get() to pass objects in and out of variables
                bsh.set( "date", new Date() );
                Date date = (Date)bsh.get( "date" );
                // This would also work:
                Date date = (Date)bsh.eval( "date" );

                bsh.eval("year = date.getYear()");
                Integer year = (Integer)bsh.get("year");  // primitives use wrappers

                // With Java1.3+ scripts can implement arbitrary interfaces...
                // Script an awt event handler (or source it from a file, more likely)
                bsh.eval( "actionPerformed( e ) { print( e ); }");
                // Get a reference to the script object (implementing the interface)
                ActionListener scriptedHandler = 
                        (ActionListener)bsh.eval("return (ActionListener)this");
                // Use the scripted event handler normally...
                new JButton.addActionListener( script );
        

 

分享到:
评论

相关推荐

    Java计算数学表达式的结果的jar包(bsh-2.0b4.jar)

    Java计算数学表达式的结果主要依赖于像bsh(BeanShell)这样的库,BeanShell是一个小型、开源的Java脚本环境,它可以动态执行Java代码并提供一个交互式的解释器。在这个场景中,`bsh-2.0b4.jar` 是BeanShell的一个...

    java 类库bsh-1.2

    java的工具类库, 运行过程中可执行嵌入java代码

    用BeanShell来运行java脚本

    标题中的“用BeanShell来运行Java脚本”指的是利用BeanShell这个开源库在Java环境中执行动态的、交互式的Java代码。BeanShell是一个轻量级的Java Scripting引擎,它允许你在运行时执行Java代码,无需编译,极大地...

    java的BeanShell公式执行引擎

    Java的BeanShell是一个轻量级、动态的脚本语言,它是专门为Java平台设计的,允许在运行时执行Java代码或者类似JavaScript的语法。BeanShell在Java应用中常被用来进行快速原型开发、测试以及扩展,它提供了一种简单的...

    bsh2.0源码

    bsh(BeanShell)是一个轻量级的、动态的Java语言解释器,它允许在运行时执行Java语法和一些扩展语法的脚本。作为Java开发工具,bsh提供了一个强大的环境,开发者可以快速测试代码片段、原型设计、自动化任务,甚至...

    bsh架包以及源码包

    首先,Beanshell 允许动态执行Java代码,这意味着在程序运行时可以编写、修改和执行Java表达式或语句,而无需重新编译整个应用程序。这对于测试、调试和快速原型设计非常有用。例如,你可以用它来快速实现一些临时的...

    bsh.jar/ jcr-1.0.jar/ jbpm-identity.jar/ jbpm-jpdl.jar

    在Java应用程序中,BeanShell可以用来动态地执行或测试Java代码,为开发者提供了一种灵活的方式来扩展或控制应用的行为。 **jcr-1.0.jar**:这个文件代表了Java Content Repository (JCR) API的实现,它是一个标准...

    bsh.jar,jcr-1.0.jar,jbpm-identity.jar,jbpm-jpdl.jar

    它允许开发者在运行时动态地执行Java代码,这对于测试、调试或者在应用程序中实现脚本功能非常有用。在JBPM中,BeanShell被用来执行工作流中的脚本任务,提供了灵活的业务规则实现。 2. **jcr-1.0.jar**:这是Java ...

    php调用java方法介绍

    ### PHP调用Java方法介绍 #### 一、背景与需求 在实际开发过程中,有时我们需要在PHP环境中调用Java的方法来实现特定的功能。...这种方式特别适用于需要复用已有Java代码或利用Java生态系统的场景。

    bsh.rar_Beanshel_beanshell_bsh-2.0b4-src.zip_javascript 解释

    也就是说BeanShell在许多方面对于Java的用处就像Tcl/Tk对于C的用处一样:BeanShell是可嵌入式的---你可以在运行时从你的应用程序调用BeanShell去动态的执行Java代码或是为你的应用程序提供脚本扩展。相反,你也可以...

    执行字符串形式对象的方法

    在Java编程语言中,我们经常需要在运行时动态地执行代码。这在处理用户输入、配置文件或与其他语言交互时非常有用。一个常见的库,用于实现这种动态执行能力的是BeanShell(bsh-2.0b4.jar)。BeanShell是一个小型、...

    NC-57BSH远程代码执行漏洞补丁

    先按 说明.txt 中的方案解决 如果替换jar包后导致错误,可以用如下...把项目上“bsh-2.0b”原文件中的 \bsh\servlet\BshServlet.class 文件删除,重启服务 影响版本:NC57 / NC63 / NC65 / NCC1903 / NCC1909 / NCC2005

    BeanShell快速入门Java应用.docx

    通过BeanShell,开发者可以在运行时动态执行Java代码,这在调试、脚本编写和应用程序扩展等方面非常有用。 #### 二、安装与配置 1. **下载BeanShell**: - 访问官方网站:`http://beanshell.org/` 下载最新的JAR...

    CodeEval:Java中一些代码eval问题的一些解决方案

    在Java中,如果你需要动态执行代码,你可能需要借助于Java的反射API或者使用Java Compiler API来编译和运行Java源代码。下面是一些处理代码评估问题的常见方法: 1. **Java反射API**: 反射API允许在运行时检查类...

    beanshell-2.0b4.src

    1. **动态执行Java代码**:Beanshell 允许用户在运行时编写和执行Java代码,无需编译过程,提高了开发效率。 2. **脚本环境**:提供了类似Bash或Perl的交互式脚本环境,支持变量、函数、控制结构等。 3. **Java对象...

    beanshell.jar

    这个库特别适合进行快速原型开发、测试和调试,因为它无需编译就能直接运行代码,极大地提高了开发效率。 `bsh-2.0b4.jar` 文件包含了完整的 Beanshell 实现,包括解释器、类管理器和其他必要的支持组件。这个库...

    java-interpreter

    Java解释器的任务就是读取这些字节码,解析并执行其中的指令,完成程序的运行。 Java解释器的工作流程大致如下: 1. **加载类文件**:当程序需要使用某个类时,解释器首先会找到对应的`.class`文件,并将其加载到...

    BeanShell2.0b5源码

    - **动态执行:** BeanShell 可以在运行时动态解析和执行Java代码,这对于测试、调试和快速原型设计非常有用。 - **脚本支持:** 它支持类似于JavaScript的脚本语法,允许开发者编写简洁的控制流程和表达式。 - *...

    Java常用的Jar包

    8. **bsh**: BeanShell是Java的一个小型、灵活的脚本环境,允许在运行时动态执行Java代码,可以用于调试、测试或者快速实现原型。 9. **commons**: 这可能是对Apache Commons项目的泛指,这是一个包含大量实用工具...

    BeanShell介绍

    BeanShell是一款轻量级的Java脚本引擎,它允许用户在运行时动态地编写和执行Java代码。作为一个开源项目,BeanShell在IT行业中被广泛应用于快速原型开发、测试、脚本自动化以及教学等场景。其灵活性和易用性是它的一...

Global site tag (gtag.js) - Google Analytics