我最近在 MRI 中使用 JRuby 和 Thrift gem 后才安装了它。我遇到了一个问题,如果我需要“thrift”,我会收到消息“无法加载 thrift_native 扩展。默认为纯 Ruby 库。”如果我随后尝试要求在 ruby 中生成的代码 thrift,我将收到此错误:“NameError:未初始化的常量 Thrift::Struct_Union”
Thrift gem 目前无法与 JRuby 一起使用吗?
除了使用 gem 之外,我还能做些什么来将 thrift 与 JRuby 结合使用吗?
编辑:在我的 mac 上进行研究后,我发现 MRI gem 和 JRuby gem 是不同的,尽管 gem 的版本相同(0.2.0.4)。现在这似乎是一个糟糕的主意,但是如果您将 .rb 文件从 MRI gem 复制到 JRuby gem 中并添加require 'thrift/struct_union'
到 thrift.rb,您将不再收到与 Thrift gem 相关的任何错误,除了它找不到 thirft_native 并将使用纯 Ruby 库。这是可以解释的,因为 thrift_native 是为 C 而不是 Java 设计的。
当您已经在使用 JRuby 时,我会使用 Java 本机 thrift 客户端。对我来说,节俭是转向 JRuby 的首要原因,因为 Ruby 实现相当缓慢且存在错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)