JRuby неправильный тип элемента класса java.lang.String (массив содержит символ), связанный с JAVA_HOME - PullRequest
1 голос
/ 14 июня 2010

Я нахожусь на Ubuntu x64 bit:

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

Фокус ошибки: ERROR IN TESTINGнеправильный тип элемента класс 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.Вероятно, вы можете получить из ошибки, что я просто пытаюсь преобразовать переменную ruby ​​в java, используя to_java.Это прекрасно работает на моем компьютере с Windows, и я подтвердил, что драгоценные камни одинаковы, но я не думаю, что это связано с драгоценными камнями.

Я солгал.Я изменил свой JAVA_HOME обратно на моем компьютере с Windows, и эта ошибка все еще происходит.Так что теперь код неожиданно не запускается ни на одной машине.Я недавно установил git на свой компьютер с Windows и добавил код в репозиторий.Но я ничего с этим не сделал.Все, что он сказал, это то, что он преобразует все LF в CRLF ... Это ничего не должно изменить, хотя и должно?Любые идеи о том, почему я теперь получаю эти ошибки?Я ничего не менял на своей машине с Windows в течение нескольких месяцев, кроме установки git.

Обновление: происходит то, что я не могу преобразовать строку ruby ​​в символ java, даже если строка ruby ​​только 1 символдолго.Такого никогда не было, и мои файлы 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

1 Ответ

0 голосов
/ 01 июля 2010

Преобразование строкового массива ruby ​​в java-массив, по-видимому, не поддерживается командой to_java в последней версии jruby (я полагаю, 1.5). Если вы используете 1.3, он должен работать нормально.

...