私はUbuntu x64ビットを実行しています:
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)
と
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]
このコードを自宅の Windows 7 コンピューターで実行しています。最近、フォルダー全体を Ubuntu にコピーし、java、jruby、および関連する gem をインストールしましたが、メイン ファイルを実行すると次のエラーが発生します。
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
エラーの焦点は次のとおりです: ERROR IN TESTING wrong element type class java.lang.String(array contains char)
私のWindowsマシンではすべて正常に動作します。JAVA_HOME が設定されていないため、このエラーが発生していると考えましたが、これを次のように bashrc に追加しました。
export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk
確認済み:
echo $JAVA_HOME
/usr/lib/jvm/java-1.6.0-openjdk
Windows で JAVA_HOME 変数を削除すると、同様のエラーが発生する可能性があります。
=================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
明らかにまったく同じではありませんが、これは Java パスに関係しているように感じます。おそらく、to_java を使用して Ruby 変数を Java に変換しようとしているというエラーから派生する可能性があります。これは私の Windows マシンで問題なく動作し、gem が同じであることを確認しましたが、gem とは関係ないと思います。
私は嘘をついた。JAVA_HOME を Windows マシンに戻しましたが、このエラーは引き続き発生します。そのため、コードは突然どちらのマシンでも実行されなくなりました。最近、Windows マシンに git をインストールし、コードをリポジトリに追加しました。しかし、私は実際には何もしていません。それが言ったのは、すべてのLFをCRLFに変換するということだけでした...それでも何も変わらないはずですか?これらのエラーが発生する理由について何か考えはありますか? git のインストールを除いて、何ヶ月も自分の Windows マシンに何も変更を加えていません。
更新: ルビー文字列の長さが 1 文字しかない場合でも、ルビ文字列を Java 文字に変換できません。これは前例がなく、私の Java ファイルは 2 か月以上更新されていません。Rubyも更新していません。
この時点でのエラーに関連するコード行は次のとおりです。
tokenizer = IndoEuropeanTokenizerFactory.new.tokenizer(text.split('').to_java(:char), 0, text.length)
テキストは、各文字に分割された単なるテキスト段落です。同様の複製:
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