2010-06-14 12 views
1

Je suis sur Ubuntu x64 bit cours d'exécution:JRuby mauvais type d'élément classe java.lang.String (tableau contient char) racontai JAVA_HOME

java version "1.6.0_18" 
OpenJDK Runtime Environment (IcedTea6 1.8) (6b18-1.8-0ubuntu1) 
OpenJDK 64-Bit Server VM (build 14.0-b16, mixed mode) 

et

jruby 1.4.0 (ruby 1.8.7 patchlevel 174) (2010-02-11 6586) (OpenJDK 64-Bit Server VM 1.6.0_18) [amd64-java] 

J'ai ce code en cours d'exécution sur mon ordinateur Windows 7 à la maison. J'ai récemment copié sur mon dossier entier vers Ubuntu, Java installé, JRuby et pierres précieuses associées mais je reçois cette erreur quand je lance mon fichier principal:

jruby run.rb test 

=================Processing FREDERICKSBURG_1.1======================= 
ERROR IN TESTING wrong element type class java.lang.String(array contains char) 
/home/daryl/Desktop/work/Code/geografikos/lib/sentence_splitter/splitter.rb:21:in `to_java' 
/home/daryl/Desktop/work/Code/geografikos/lib/sentence_splitter/splitter.rb:21:in `split' 
/home/daryl/Desktop/work/Code/geografikos/lib/models/page.rb:103:in `sentences' 
/home/daryl/Desktop/work/Code/geografikos/lib/extractor/lingpipe_svm.rb:34:in `extract' 
/home/daryl/Desktop/work/Code/geografikos/lib/extractor/geo_controller.rb:9:in `process' 
/home/daryl/Desktop/work/Code/geografikos/lib/extractor/geo_controller.rb:8:in `each' 
/home/daryl/Desktop/work/Code/geografikos/lib/extractor/geo_controller.rb:8:in `process' 
/home/daryl/Desktop/work/Code/geografikos/lib/extractor/geo_controller.rb:6:in `each' 
/home/daryl/Desktop/work/Code/geografikos/lib/extractor/geo_controller.rb:6:in `process' 
/home/daryl/Desktop/work/Code/geografikos/lib/statistics.rb:111:in `generate_all' 
/home/daryl/Desktop/work/Code/geografikos/lib/statistics.rb:105:in `each' 
/home/daryl/Desktop/work/Code/geografikos/lib/statistics.rb:105:in `generate_all' 
run.rb:56 

L'objectif de l'erreur est: ERREUR DANS LES ESSAIS mal élément type classe java.lang.String (tableau contenant char)

Tout fonctionne correctement sur ma machine windows. Je me suis dit que je recevais cette erreur parce que je n'ai pas JAVA_HOME mis mais j'ajouté à Bashrc comme:

export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk 

et ont confirmé:

echo $JAVA_HOME 
/usr/lib/jvm/java-1.6.0-openjdk 

Je peux produire une erreur similaire en supprimant mon JAVA_HOME variable sur les fenêtres:

=================Processing FREDERICKSBURG_1.3======================= 
ERROR IN TESTING cannot convert instance of class org.jruby.RubyString to char 
C:/work/Code/geografikos/lib/sentence_splitter/splitter.rb:21:in `to_java' 
C:/work/Code/geografikos/lib/sentence_splitter/splitter.rb:21:in `split' 
C:/work/Code/geografikos/lib/models/page.rb:103:in `sentences' 
C:/work/Code/geografikos/lib/extractor/lingpipe_svm.rb:34:in `extract' 
C:/work/Code/geografikos/lib/extractor/geo_controller.rb:9:in `process' 
C:/work/Code/geografikos/lib/extractor/geo_controller.rb:8:in `each' 
C:/work/Code/geografikos/lib/extractor/geo_controller.rb:8:in `process' 
C:/work/Code/geografikos/lib/extractor/geo_controller.rb:6:in `each' 
C:/work/Code/geografikos/lib/extractor/geo_controller.rb:6:in `process' 
C:/work/Code/geografikos/lib/statistics.rb:111:in `generate_all' 
C:/work/Code/geografikos/lib/statistics.rb:105:in `each' 
C:/work/Code/geografikos/lib/statistics.rb:105:in `generate_all' 
run.rb:56 

Il est évidemment pas exactement la même chose, mais j'ai le sentiment que cela a à voir avec le chemin java. Vous pouvez probablement dériver de l'erreur que j'essaie juste de convertir une variable ruby ​​en java en utilisant to_java. Cela fonctionne très bien sur ma machine Windows et j'ai confirmé que les gemmes sont les mêmes mais je ne pense pas que cela a à voir avec les gemmes.

J'ai menti. J'ai changé mon JAVA_HOME sur ma machine Windows et cette erreur se produit toujours. Alors maintenant, le code ne fonctionne soudainement sur aucune machine. J'ai récemment installé git sur ma machine Windows et ajouté le code à un dépôt. Mais je n'ai vraiment rien fait avec. Tout ce qu'il a dit était qu'il va convertir tous les LF en CRLF ... Cela ne devrait pas changer quoi que ce soit devrait-il? Des idées sur pourquoi je reçois maintenant ces erreurs? Je n'ai rien changé sur ma machine Windows en mois sauf pour l'installation de git.

Mise à jour: Qu'est-ce qui se passe est que je ne peux pas convertir une chaîne de rubis à un java char, même si la chaîne de rubis est seulement 1 char long. Cela ne s'est jamais produit auparavant et mes fichiers java n'ont pas été mis à jour depuis plus de 2 mois. Je n'ai pas mis à jour ruby ​​non plus.

Voici la ligne de code associé à l'erreur à ce stade:

tokenizer = IndoEuropeanTokenizerFactory.new.tokenizer(text.split('').to_java(:char), 0, text.length) 

Lorsque le texte est juste un paragraphe de texte propre étant divisé en chaque caractère. Une reproduction similaire:

irb(main):002:0> ['1','2','3'].to_java :char 
ArgumentError: wrong element type class java.lang.String(array contains char) 
    from (irb):3:in `to_java' 
    from (irb):3 
irb(main):003:0> exit 
+0

Il serait utile de poster le code dans votre script autour de la ligne en question. Ou mieux encore, postez un petit script de test qui recrée l'erreur isolément. – Rob

+0

Je l'ai mis à jour, il peut également être reproduit en tant que tel: irb (principal): 002: 0> ['1', '2', '3'] to_java: char ArgumentError: mauvais élément type classe java. lang.String (tableau contient char) \t de (RIR): 3: dans 'to_java » \t de (RIR): 3 irb (main): 003: 0> sortie Ce code a travaillé pendant une longue période et n'a pas été modifié, cela devrait théoriquement fonctionner. – Daryl

Répondre

0

Conversion d'un tableau de chaînes rubis à un tableau de java est apparemment pas pris en charge avec la commande to_java dans la dernière version de JRuby (1.5 je crois). Si vous utilisez 1.3 cela devrait fonctionner correctement.