JRuby错误的元素类型类java.lang.String(数组包含char)与JAVA_HOME相关

时间:2010-06-14 17:38:19

标签: java jruby java-home

我正在运行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错误的元素类型类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机器上工作正常,我已经确认宝石是相同的,但我不认为这与宝石有关。

我撒了谎。我在我的Windows机器上更改了我的JAVA_HOME,但仍然出现此错误。所以现在代码突然不能在任何一台机器上运行。我最近在我的Windows机器上安装了git并将代码添加到了存储库。但我还没有真正做过任何事情。所有它说它会把所有的LF转换成CRLF ......虽然它应该不会改变任何东西吗?关于为什么我现在遇到这些错误的任何想法?除了安装git之外,我几个月没有在Windows机器上做任何改动。

更新:发生的事情是我无法将ruby字符串转换为java字符,即使ruby字符串只有1个字符长。这从未发生过,我的java文件已经超过2个月未更新。我还没有更新ruby。

此处是与错误相关的代码行:

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

其中text只是一个分成每个字符的干净文本段落。类似的复制:

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

1 个答案:

答案 0 :(得分:0)

最新版本的jruby(1.5我相信)中的to_java命令不支持将ruby字符串数组转换为java数组。如果使用1.3,它应该可以正常工作。