2010-06-14 60 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,它应该可以正常工作。

相关问题