Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
错误“;can';t创建Java虚拟机&x201D;尝试使用rubyjavabridge(RJB)gem_Java_Ruby On Rails_Ruby_Jvm_Rjb - Fatal编程技术网

错误“;can';t创建Java虚拟机&x201D;尝试使用rubyjavabridge(RJB)gem

错误“;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是否会讨论这个问题,

我正在尝试实现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:

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)>'