Scripting 我可以实例化来自另一个beanshell脚本的beanshell类吗?

Scripting 我可以实例化来自另一个beanshell脚本的beanshell类吗?,scripting,beanshell,Scripting,Beanshell,我想运行从不同beanshell文件导入的类。但我不知道如何从主beanshell文件实例化类。这可能吗 我导入的类: class HelloW { public void run(){ print("Hello World"); } } 应运行并实例化类的beanshell主文件: Interpreter i = new Interpreter(); i.source("HelloW.bsh"); 这方面的技术非常好,所以你应该先通读一遍。在你的情况下,没有什么问题。也就是说,存在

我想运行从不同beanshell文件导入的类。但我不知道如何从主beanshell文件实例化类。这可能吗

我导入的类:

class HelloW {
public void run(){
    print("Hello World");
}
}
应运行并实例化类的beanshell主文件:

Interpreter i = new Interpreter();
i.source("HelloW.bsh");
这方面的技术非常好,所以你应该先通读一遍。在你的情况下,没有什么问题。也就是说,存在脚本化对象。此外,您开始使用的.bsh文件需要执行脚本对象。以您的示例为例,此代码应该可以工作:

Hello() {
 run(){
     print("Hello World");
 }

 return this;
}

myHello = Hello();
myHello.run(); // Hello World
*支持脚本类的BeanShell 2.0b1及更高版本的更新答案*:

我创建了两个beanshell文件,并将它们放在“scripts”目录中

我相信,第一个“executor.bsh”就是您所说的“父”脚本

// executor.bsh

addClassPath(".");
importCommands("scripts");

source(); // This runs the script which defines the class(es)

x = new HelloWorld();
x.start();
第二个文件包含脚本类。请注意,我使用的是脚本命令,根据BeanShell文档,文件名必须与命令名相同

// source.bsh

source() {
    public class HelloWorld extends Thread {
        count = 5;
        public void run() {
            for(i=0; i<count; i++)
                print("Hello World!");
        }

    }
}
注意,我留下了一些注释代码,其中还显示了使用反射从Java执行脚本类。这就是结果:

Hello World!
Hello World!
Hello World!
Hello World!
Hello World!

抱歉,但你们误解了我的问题,这个类Hello在单独的bsh文件中,我用“解释器”来称呼它。我希望你把我给出的代码放在HelloW.bsh中,并用你在问题中的方式来称呼它。如果这样做,它将实例化脚本对象并调用run方法。您提供给解释器的文件必须是某种脚本并执行操作。调用
source()
方法与调用
eval()
方法相同,只是脚本来自一个文件,而不是一个字符串。好的,谢谢你,我知道了,我假设没有办法在父bsh文件中运行方法或实例化类(基本上是用类导入文件)?我只是做了一些检查,如果您使用的是Beta 2.0b1或b2,您应该能够定义脚本类。我使用的产品被旧版本卡住了。我已经更新了我的答案,向你展示了我是如何做我认为你在寻找的事情的。我希望有帮助。
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!