1

Java コードを beanshell スクリプトとして使用したかったのですが、beanshell が名前空間にクラスが見つからないという例外をスローします。ビーンシェルに内部クラスはありませんか、それとも他の用途がありますか?

私のスクリプトは次のようになります。

.......
.......
java code
.......
.......
MyClass m = new MyClass(); //Error here: MyClass not fount in namespace



class MyClass {

}

スクリプトで宣言するスクリプトで内部クラスを使用します。

ありがとう、ビラル

4

3 に答える 3

1

ここでのばかげた答えかもしれませんが、MyClass 定義がファイル内での使用法を超えている必要があるのでしょうか? ビーンシェルはスクリプトを直線的に処理しませんか?

ドキュメントをざっと見てもこれはわかりませんが、次のスクリプトのテストは確かにうまくいきます:

class MyClass {
}
MyClass m = new MyClass();
于 2010-09-21T03:19:58.743 に答える
0

クラス定義は BeanShell ではサポートされていません。

BeanShell 内部クラス構文を使用して、インターフェースを実装できます。

    x = new MyInterface() {
        overriddenMethod() {
          // ....
        }
    }

v = x.overriddenMethod(); 

または

    overriddenMethod() {
       //.....
    }

    // 'this' is a object of whatever Foo expects 
    //
    new Foo(this);

あなたの場合、スクリプト化されたオブジェクトアプローチを使用する方が良いと思います:

myClass() {

// methods ...

return this;

};

m = myClass(); // new instance
于 2013-01-06T15:07:23.037 に答える
0

追加情報:匿名の内部クラスを引数として使用できないため、実装を変数に割り当てる必要があります。(JMeter で)

動作しません:

object.setContext(new SomeInterface(){
  //implement methods
});

作品:

SomeInterface ctx = new SomeInterface(){
    //implement methods
});
object.setContext(ctx);

それが誰かを助けることを願っています。

于 2016-09-14T13:29:54.130 に答える