java - JRuby与JAVA_HOME相关的错误元素类型类java.lang.String(array contains char)

标签 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

错误的焦点是: 测试错误错误元素类型类 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 机器上运行良好,并且我已经确认 gem 是相同的,但我认为这与 gem 无关。

我撒谎了。我将 JAVA_HOME 改回到 Windows 计算机上,但仍然出现此错误。所以现在代码突然无法在任何一台机器上运行。我最近在我的 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)

其中文本只是一个被分割成每个字符的干净文本段落。类似的再现:

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

最佳答案

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

关于java - JRuby与JAVA_HOME相关的错误元素类型类java.lang.String(array contains char),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3039465/

相关文章:

java - 为什么是这个版本的java?

java - Android Studio 类名绿色?

java - 创建线程时,我们在构造函数中传递的参数包含(this)为什么要使用它?

java - 如何在 Java 中迭代子 TreeMap?

ruby - http_request.set_form_data : Getting undefined method map for string for the json parameter

ruby-on-rails - 将哈希数组转换为 csv 文件

heroku - 在 Heroku 上使用 jRuby cext 构建 gem

java-home - 在Linux中将JAVA_HOME系统设置为全范围的好方法是什么?/etc/profile或/etc/profile.d/custom.sh?

java - 使用 .bat 文件设置 JAVA_HOME 和 MAVEN_HOME

java - 如何使用 Hessian 二进制远程处理协议(protocol)将 DateTime 或某种时间戳从 PHP 发送到 Java?