我最近在 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 制作的。