2

我最近在 MRI 中使用 JRuby 和 Thrift gem 后才安装它。我遇到了一个问题,如果我需要'thrift',我会收到消息“无法加载 thrift_native 扩展。默认为纯 Ruby 库。” 如果我然后尝试要求在 ruby​​ 中生成的代码节俭,我会得到这个错误:“NameError: uninitialized constant Thrift::Struct_Union”

thrift gem 当前不能与 JRuby 一起使用吗?

除了使用 gem 之外,我还能做些什么来使用 JRuby 的节俭吗?

编辑:在我的mac上挖掘之后,我发现MRI gem和JRuby 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 制作的。

4

1 回答 1

1

当您已经在使用 JRuby 时,我会使用 Java 本机节俭客户端。对我来说,节俭是首先转向 JRuby 的原因,因为 Ruby 的实现相当缓慢且有缺陷。

于 2010-09-18T16:03:57.000 回答