2010-06-14 26 views
1

我在Ubuntu 64位運行:JRuby的錯誤的元素類型java.lang.String類(數組包含字符)相關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) 

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和相關的寶石,但是當我跑我的主要文件,我得到這個錯誤:

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 

錯誤的重點是: 錯誤測試錯誤元素類型的類java.lang.String(數組包含字符)

一切工作正常我的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 

我可以通過刪除我的JAVA_HOME產生類似的錯誤在Windows變量:

=================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機器上,我已經確認寶石是相同的,但我不認爲這與寶石。

我說謊了。我在我的Windows機器上更改了我的JAVA_HOME,並且仍然出現此錯誤。所以現在代碼突然不能在任何一臺機器上運行。我最近在我的Windows機器上安裝了git,並將代碼添加到存儲庫。但我沒有真正做到這一點。它所說的是它會將所有的LF轉換爲CRLF ......儘管它應該不會改變任何東西嗎?任何想法,爲什麼我現在得到這些錯誤?除了安裝git之外,我幾個月來一直沒有在windows機器上改變過任何東西。

更新:發生了什麼是我無法將ruby字符串轉換爲java char,即使ruby字符串只有1個字符長。這從來沒有發生過,我的java文件還沒有更新超過2個月。我還沒有更新紅寶石。

這裏是代碼的錯誤在這一點相關的線路:

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 
+0

將腳本中的代碼發佈到您的腳本中會有幫助。或者更好的辦法是,發佈一個能夠單獨重新創建錯誤的測試腳本。 – Rob 2010-06-15 01:38:22

+0

我更新它,它也可被再現爲這樣: IRB(主):002:0> [ '1', '2', '3'] to_java:炭 引發ArgumentError:錯誤的元素類型的類的java。郎。字符串(數組包含炭) \t從(IRB):3:'to_java」從(IRB) \t:3 IRB(主):003:0>出口 該代碼已經工作了很長的時間和沒有被修改,這應該在理論上工作。 – Daryl 2010-06-15 16:38:16

回答

0

轉換紅寶石字符串數組,Java數組顯然不與JRuby中的最新版本(1.5我認爲)的to_java命令支持。如果你使用1.3,它應該可以正常工作。

相關問題