2016-08-31 44 views
-4

私はgroovyメソッドを呼び出していますが、Javaから1つのPOJOを取りますが、例外が発生します。javaオブジェクトをJavaで呼び出されるGroovyメソッドに渡すにはどうすればよいですか?

import com.hrishikeshmishra.sb.Obj; 

class SampleScript2 { 

    String process(Obj obj) { 
     if(obj.num ==10) 
      return "equal"; 
     else 
      return "not-equal" 
    } 
} 

ファイルSampleScript2.groovy:COM/hrishikeshmishra/SB/Obj.java

package com.hrishikeshmishra.sb; 

class Obj { 
    public int num; 

    public Obj(int num) { 
     this.num = num; 
    } 
} 

ファイル:COM/hrishikeshmishra/SB/

ファイル:ここで

が詳細ですJavaGroovyTest.java

package com.hrishikeshmishra.sb; 

import groovy.lang.GroovyClassLoader; 
import groovy.lang.GroovyObject; 

import java.io.File; 
import java.io.IOException; 


public class JavaGroovyTest { 

    static final GroovyClassLoader classLoader = new GroovyClassLoader(); 

    public static void main(String[] args) throws IllegalAccessException, IOException, InstantiationException { 
     example6(); 
    } 

    private static void example6() throws IOException, IllegalAccessException, InstantiationException { 

     Class groovy = classLoader.parseClass(new File("/Users/hrishikesh.mishra/hrishi/codes/sb/groovyjava/src/main/resources/SampleScript2.groovy")); 
     GroovyObject groovyObj = (GroovyObject) groovy.newInstance(); 
     String output = (String) groovyObj.invokeMethod("scriptSays", new Object[] { new Obj(12)}); 
     System.out.println(output); 
    } 
} 

例外:

Exception in thread "main" org.codehaus.groovy.runtime.metaclass.MissingMethodExceptionNoStack: No signature of method: SampleScript2.scriptSays() is applicable for argument types: (com.hrishikeshmishra.sb.Obj) values: [[email protected]] 
+0

誤差は非常に明示的である:クラスSampleScript2.groovyには、あなたが呼び出しようとしているメソッドはありません: 'scriptSays()' – alfasin

答えて

1

それはあなたがscriptSays()というメソッドを呼び出すようにしようとしているためですが、あなたが定義したメソッドが実際にprocess()と呼ばれている...

+0

良いキャッチ、あなたが1日を保存しました、ありがとう。 –

+1

@HrishikeshMishra大歓迎です。それが有用であれば、受け入れられた答え(印をつけてください)として印を付けることを検討してください。 –

+0

はい、どうしてですか。 。 –

関連する問題