jruby注释方法没有被调用

我有一个名为test.jar的jar,它包含以下java类:

Test.java

package test; import java.lang.reflect.Method; public class Test { public static void yoyo(Object o) { Method[] methods = o.getClass().getMethods(); for (Method method : methods) { CanRun annos = method.getAnnotation(CanRun.class); if (annos != null) { try { method.invoke(o); } catch (Exception e) { e.printStackTrace(); } } } } } 

和接口CanRun.java

 package test; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target(value = ElementType.METHOD) @Retention(value = RetentionPolicy.RUNTIME) public @interface CanRun { } 

我的ruby文件是Main.rb

 require 'java' require 'test.jar' java_import Java::test.Test class Main def run Test.yoyo(Main.new) end java_annotation('CanRun') def onHi() puts "inside on Hi" end end app = Main.new app.run 

我通过以下命令运行它:jruby Main.rb

但是没有输出。

基本上,我要做的是,从Main.rb调用Test.java的yoyo()并在yoyo()中传递Main的对象。然后在Test.java中的yoyo()将分析Main.rb的所有函数注释CanRun,如果找到将调用它们,在我们的例子中应该调用onHi。 我检查了我在yoyo()中传递的对象不是null。 我面临的问题是onHi没有被调用。

我尝试了很多东西,但没有任何帮助。

我是否在rb文件中正确使用了注释,或者请提出其他建议。

您的注释不在默认包中(也不是导入),因此:

java_annotation 'test.CanRun'

要么

 java_import "test.CanRun" java_annotation :CanRun 
Interesting Posts