Я нахожусь на 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