2017-11-03 8 views
-2

このスクリプトを実行しようとしています。私がクラスからそれをすべて取り出すと、うまく動作します。Groovy静的スコープ

Apparent variable 'json_users' was found in a static scope but doesn't refer to a local variable, static field or class

class Test{ 

    def testProc(JsonBuilder json_List) { 

     println json_List.prettyPrint 

    } 

    public static void main(String[] args){ 

     def query = 'Select * from mytable'  

     def resultset = sql.rows(query) 

     json_users = new JsonBuilder(users:resultset)  

     testProc(json_users) 
    } 
} 

私はこのエラーを受けていますなぜすべてのアイデア:私は私の「テスト」クラスでラップすると、私はこのエラーを取得しますか?

+2

class Test { def testProc(JsonBuilder json_List) { println json_List.prettyPrint } public static void main(String[] args){ def query = 'Select * from mytable' def resultset = sql.rows(query) json_users = new JsonBuilder(users:resultset) testProc(json_users) } } 

はこれを試してみてください? – azurefrog

+0

これは正しく宣言されていませんか? json_users = new JsonBuilder(users:resultset) – John

+1

それは宣言ではなく、代入です。 'def json_users = new ...'のようなものが欲しいですか? – azurefrog

答えて

0

複数のことが間違っています。 1つは、静的メソッドからインスタンスメソッドを呼び出すことができないということです。もう1つは、宣言せずにjson_usersを参照できないことです(スクリプトではできますが、クラスではできません)。

の代わりに、この:あなたは `json_users`変数を宣言したの

class Test { 

    static testProc(JsonBuilder json_List) { 

     println json_List.prettyPrint 

    } 

    static void main(args){ 

     def query = 'Select * from mytable' 

     // you will have to declare and initialize 
     // the sql variable. 

     def resultset = sql.rows(query) 

     def json_users = new JsonBuilder(users:resultset)  

     testProc(json_users) 
    } 
} 
関連する問題