原来第一次是在osworkflow中听说过beanShell,最近又碰到,感觉还是挺有用的,比如对于我来说我就想有一些class文件拿过来直接调用看看,但有不想搭建一个麻烦的环境,而beanshell就可以满足我这个需求。
假设我欲调用的java为MyShit
package
com.app;

public class
MyShit


{

static
{
System.out.println("this is in static blog");
}

public static void main(String[] args)
{
System.out.println("this is in main method : hello shit");
}

public void shit()
{
System.out.println("hello shit!!!");
}


public static void haha()
{
System.out.println("this is static method haha");
}
}

public class
MyShit

{
static
{
System.out.println("this is in static blog");
}
public static void main(String[] args)
{
System.out.println("this is in main method : hello shit");
}
public void shit()
{
System.out.println("hello shit!!!");
}

public static void haha()
{
System.out.println("this is static method haha");
}
}
javac ...
java ..
在dos中设置classpath,指向该class文件
set classpath=%classpath%;c:\beanshell
编写一个 bsh的bat文件,便于dos直接调用beanshell脚本
java bsh.Interpreter %1
编写一个test.bsh脚本
//mytest
import com.app.*
;
print("hello,it's a beanShell test"
);
List list = new
ArrayList();
list.add("111"
);
list.add("222"
);
list.add("333"
);
print("the list = " +
list);
Date date = new
Date();
print("the date = " +
date);
//method test

add( a, b )
{
return a + b;
}

foo
= add(1, 2); // 3
print("foo = " +
foo);
foo = add("Oh", " baby"); // "Oh baby"
print("foo = " +
foo);
//about object

foo()
{
print("foo");
x=5;

bar()
{
print("foo's method bar()");
}
return this;
}

myfoo
= foo(); // prints "foo"
print( myfoo.x ); // prints "5"
myfoo.bar(); // prints "bar"
MyShit shit
= new
MyShit();
shit.shit();
shit.main(null
);
print("do you shit"
);
//MyShit.haha();
在dos下运行 bsh test.bsh就OK了
另外,beanshell作为动态脚本语言可以结合 spring2.0的新特性,你新写的业务类可以直接修改而不用重新发布,怎么样,是不是比较方便,详细操作请参考Springframework 2.0 与 ZK 混合开发实例
试一试!
详细使用请参考官方文档
1032

被折叠的 条评论
为什么被折叠?



