错误“;can';t创建Java虚拟机&x201D;尝试使用rubyjavabridge(RJB)gem
我正在尝试实现RubyJavaBridge(RJB)gem来与JVM对话,以便运行OpenNLPGem。我已经在Windows8上安装并运行了Java。所有迹象,至少据我所知,都表明Java已经安装并可运行。但是,尝试使用RJB失败,并显示消息“无法创建JavaVM”。(在其他情况下,我有时会得到“Fiddle:Module的未定义方法`dlopen',这也是无法识别的。) 我最初只是按照默认值安装JDK。由于我的64位系统,这个安装了64位Java。我不确定Ruby和RJB是否会讨论这个问题,所以我安装了32位JRE。但是,错误是相同的 我是否可以运行任何进一步的测试来确保JVM在Ruby之外工作 有人能告诉我运行Windows/Ruby/RJB/JVM可能需要做什么吗 谢谢 我使用BitNami Rubystack和Ruby 1.9.3p448运行Windows 8 根据testjava.jsp,Java似乎是可用的: 这是代码,包括我找到它的URL:错误“;can';t创建Java虚拟机&x201D;尝试使用rubyjavabridge(RJB)gem,java,ruby-on-rails,ruby,jvm,rjb,Java,Ruby On Rails,Ruby,Jvm,Rjb,我正在尝试实现RubyJavaBridge(RJB)gem来与JVM对话,以便运行OpenNLPGem。我已经在Windows8上安装并运行了Java。所有迹象,至少据我所知,都表明Java已经安装并可运行。但是,尝试使用RJB失败,并显示消息“无法创建JavaVM”。(在其他情况下,我有时会得到“Fiddle:Module的未定义方法`dlopen',这也是无法识别的。) 我最初只是按照默认值安装JDK。由于我的64位系统,这个安装了64位Java。我不确定Ruby和RJB是否会讨论这个问题,
class FiddleTry
# http://devjete.wordpress.com/2011/01/31/installing-rjb-1-3-4-on-windows-7-32bit-wo-vc/
require 'rjb'
out = Rjb::import('java.lang.System').out <== Line 5 is here
out.print('Hello Rjb from ')
p out._classname
end
调用链指向dl.rb、fiddle.rb和jar_loader.rb。jarloader.rb起始行43:
# Load Rjb and create Java VM.
def self.init_rjb
::Rjb::load(nil, self.jvm_args)
set_java_logging if self.log_file
end
此时,我在创建JVM时遇到了相同的错误。所以,我又开始尝试运行RJB。错误链如下所示:
Fast Debugger (ruby-debug-ide 0.4.17, ruby-debug-base19x 0.11.30.pre12) listens on 127.0.0.1:59488
Uncaught exception: can't create Java VM
D:/BitNami/rubystack-1.9.3-12/ruby/lib/ruby/gems/1.9.1/gems/bind-it-0.2.7/lib/bind-it/jar_loader.rb:45:in `load'
D:/BitNami/rubystack-1.9.3-12/ruby/lib/ruby/gems/1.9.1/gems/bind-it-0.2.7/lib/bind-it/jar_loader.rb:45:in `init_rjb'
D:/BitNami/rubystack-1.9.3-12/ruby/lib/ruby/gems/1.9.1/gems/bind-it-0.2.7/lib/bind-it/jar_loader.rb:38:in `load_jar_rjb'
D:/BitNami/rubystack-1.9.3-12/ruby/lib/ruby/gems/1.9.1/gems/bind-it-0.2.7/lib/bind-it/jar_loader.rb:27:in `load'
D:/BitNami/rubystack-1.9.3-12/ruby/lib/ruby/gems/1.9.1/gems/bind-it-0.2.7/lib/bind-it/binding.rb:63:in `load_jar'
D:/BitNami/rubystack-1.9.3-12/ruby/lib/ruby/gems/1.9.1/gems/bind-it-0.2.7/lib/bind-it/binding.rb:71:in `block in load_default_jars'
D:/BitNami/rubystack-1.9.3-12/ruby/lib/ruby/gems/1.9.1/gems/bind-it-0.2.7/lib/bind-it/binding.rb:68:in `each'
D:/BitNami/rubystack-1.9.3-12/ruby/lib/ruby/gems/1.9.1/gems/bind-it-0.2.7/lib/bind-it/binding.rb:68:in `load_default_jars'
D:/BitNami/rubystack-1.9.3-12/ruby/lib/ruby/gems/1.9.1/gems/bind-it-0.2.7/lib/bind-it/binding.rb:55:in `bind'
D:/BitNami/rubystack-1.9.3-12/ruby/lib/ruby/gems/1.9.1/gems/open-nlp-0.1.4/lib/open-nlp.rb:14:in `load'
C:/Users/Richard/RubymineProjects/Utilities/open_nlp_sample.rb:32:in `<class:OpenNlpSample>'
C:/Users/Richard/RubymineProjects/Utilities/open_nlp_sample.rb:1:in `<top (required)>'
Fast调试器(ruby-debug-ide 0.4.17,ruby-debug-base19x 0.11.30.pre12)监听127.0.0.1:59488
未捕获异常:无法创建Java虚拟机
D:/BitNami/rubystack-1.9.3-12/ruby/lib/ruby/gems/1.9.1/gems/bind-it-0.2.7/lib/bind-it/jar_loader.rb:45:in'load'
D:/BitNami/rubystack-1.9.3-12/ruby/lib/ruby/gems/1.9.1/gems/bind-it-0.2.7/lib/bind-it/jar_loader.rb:45:in`init_rjb'
D:/BitNami/rubystack-1.9.3-12/ruby/lib/ruby/gems/1.9.1/gems/bind-it-0.2.7/lib/bind-it/jar\u loader.rb:38:in'load\u jar\u rjb'
D:/BitNami/rubystack-1.9.3-12/ruby/lib/ruby/gems/1.9.1/gems/bind-it-0.2.7/lib/bind-it/jar_loader.rb:27:in'load'
D:/BitNami/rubystack-1.9.3-12/ruby/lib/ruby/gems/1.9.1/gems/bind-it-0.2.7/lib/bind-it/binding.rb:63:in'load_-jar'
D:/BitNami/rubystack-1.9.3-12/ruby/lib/ruby/gems/1.9.1/gems/bind-it-0.2.7/lib/bind-it/binding.rb:71:in`block in load_default_jars'
D:/BitNami/rubystack-1.9.3-12/ruby/lib/ruby/gems/1.9.1/gems/bind-it-0.2.7/lib/bind-it/binding.rb:68:in'each'
D:/BitNami/rubystack-1.9.3-12/ruby/lib/ruby/gems/1.9.1/gems/bind-it-0.2.7/lib/bind-it/binding.rb:68:in'load\u default\u jars'
D:/BitNami/rubystack-1.9.3-12/ruby/lib/ruby/gems/1.9.1/gems/bind-it-0.2.7/lib/bind-it/binding.rb:55:in'bind'
D:/BitNami/rubystack-1.9.3-12/ruby/lib/ruby/gems/1.9.1/gems/open-nlp-0.1.4/lib/open-nlp.rb:14:in'load'
C:/Users/Richard/RubymineProjects/Utilities/open\u nlp\u sample.rb:32:in`'
C:/Users/Richard/RubymineProjects/Utilities/open\u nlp\u sample.rb:1:in`'
首先,我需要卸载Java x64并安装JDK x586以获得32位支持
然后,设置JAVA\u HOME
,如下所示:
JAVA\u HOME=C:\Program Files(x86)\JAVA\jdk1.7.0\u 40
并将JAVA\u HOME
添加到我的路径:
%JAVA\u HOME%\bin;C:\ProgramFiles(x86)\Java\jre7\bin;
这解决了“无法创建JavaVM”的问题
设置$DEBUG=false
,或注释掉该行,将消除所有其他消息。$DEBUG
模式显示可能捕获并解决的错误消息,以便忽略它们
“无法创建JavaVM”问题解决后,所有其他错误消息都属于这种类型,因此都是虚假的
JetBrains对Rubymine的支持为我解决了这个问题。他们非常好,尤其是Serge,我推荐他们的产品是因为他们的支持。开放nlp gem需要rjb吗?仔细考虑一下……添加了更多细节来说明我是如何做到这一点的,在上面的问题中。开放nlp最终调用了fiddler,最终调用了fiddlerrjb终止了Java VM的创建。我追溯到目前为止的问题,并认为如果我可以直接调试运行rjb,这将解决我的更高级别的问题。进一步的密集调试表明,rjb gem上出现了早期的loaderror,导致一系列相关错误,最终导致无法创建jvm。真正的问题被掩盖了。如果我能加载rjb gem,我可能会修复它。
=begin
Examples
Simple tokenizer
=end
OpenNLP.load
# Load Rjb and create Java VM.
def self.init_rjb
::Rjb::load(nil, self.jvm_args)
set_java_logging if self.log_file
end
Fast Debugger (ruby-debug-ide 0.4.17, ruby-debug-base19x 0.11.30.pre12) listens on 127.0.0.1:59488
Uncaught exception: can't create Java VM
D:/BitNami/rubystack-1.9.3-12/ruby/lib/ruby/gems/1.9.1/gems/bind-it-0.2.7/lib/bind-it/jar_loader.rb:45:in `load'
D:/BitNami/rubystack-1.9.3-12/ruby/lib/ruby/gems/1.9.1/gems/bind-it-0.2.7/lib/bind-it/jar_loader.rb:45:in `init_rjb'
D:/BitNami/rubystack-1.9.3-12/ruby/lib/ruby/gems/1.9.1/gems/bind-it-0.2.7/lib/bind-it/jar_loader.rb:38:in `load_jar_rjb'
D:/BitNami/rubystack-1.9.3-12/ruby/lib/ruby/gems/1.9.1/gems/bind-it-0.2.7/lib/bind-it/jar_loader.rb:27:in `load'
D:/BitNami/rubystack-1.9.3-12/ruby/lib/ruby/gems/1.9.1/gems/bind-it-0.2.7/lib/bind-it/binding.rb:63:in `load_jar'
D:/BitNami/rubystack-1.9.3-12/ruby/lib/ruby/gems/1.9.1/gems/bind-it-0.2.7/lib/bind-it/binding.rb:71:in `block in load_default_jars'
D:/BitNami/rubystack-1.9.3-12/ruby/lib/ruby/gems/1.9.1/gems/bind-it-0.2.7/lib/bind-it/binding.rb:68:in `each'
D:/BitNami/rubystack-1.9.3-12/ruby/lib/ruby/gems/1.9.1/gems/bind-it-0.2.7/lib/bind-it/binding.rb:68:in `load_default_jars'
D:/BitNami/rubystack-1.9.3-12/ruby/lib/ruby/gems/1.9.1/gems/bind-it-0.2.7/lib/bind-it/binding.rb:55:in `bind'
D:/BitNami/rubystack-1.9.3-12/ruby/lib/ruby/gems/1.9.1/gems/open-nlp-0.1.4/lib/open-nlp.rb:14:in `load'
C:/Users/Richard/RubymineProjects/Utilities/open_nlp_sample.rb:32:in `<class:OpenNlpSample>'
C:/Users/Richard/RubymineProjects/Utilities/open_nlp_sample.rb:1:in `<top (required)>'