2010-08-13 10 views
0

J'essaye de porter un java vers jruby, et il utilise un beans PropertyDescriptor. Le code original est:Création de bean PropertyDescriptor en utilisant JRuby

new PropertyDescriptor("splitEvaluator", CrossValidationResultProducer.class) 

que j'ai essayé de port:

PropertyDescriptor.new("splitEvaluator", CrossValidationResultProducer) 

Cependant, je reçois l'erreur:

no constructor with arguments matching [class org.jruby.RubyString, class org.jruby.RubyClass] on object #<Java::JavaBeans::PropertyDescriptor:0x86f847> (NameError) 

Le PropertyDescriptor API dit le second argument devrait être une classe Java. De quoi ai-je besoin pour que ça fonctionne dans JRuby?

Répondre

0

Je peux voir un argument que c'est un bug qui ne fonctionne pas comme vous l'aviez prévu. Ou au moins que JRuby serait assez intelligent pour convertir une représentation de classe Ruby d'une classe Java en un argument de classe Java.

Comme c'est le cas, en utilisant #java_class fonctionne, comme vous l'avez découvert.

+0

Merci, Nick. Il serait intéressant de savoir s'il y a des inconvénients à convertir automatiquement en une classe Java si la méthode en attend une. – michaeltwofish

0

Je dois utiliser la classe Java plutôt que la représentation Ruby de la classe Java. Cela marche.

PropertyDescriptor.new("splitEvaluator", CrossValidationResultProducer.java_class)